Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中GC的成本_Java_Garbage Collection - Fatal编程技术网

Java中GC的成本

Java中GC的成本,java,garbage-collection,Java,Garbage Collection,最近我在一次采访中被问到: java中垃圾收集的成本是多少 我的回答是:通过收集未使用的对象,我们可以释放堆空间,以避免OutOfMemoryError 但在我看来,面试官并不满意 请帮助我了解Java中GC的成本。垃圾收集涉及复杂的内存管理,可能需要重要的CPU资源。。。根据应用程序的类型和运行的JVM,有各种GC策略 如果应用程序创建并释放大量内存,垃圾收集可能会占用“一些”不可忽略的CPU,甚至可能会将应用程序锁定一段时间 根据您申请的目的,这可能是可接受的,也可能是不可接受的。您必须根据

最近我在一次采访中被问到:

java中垃圾收集的成本是多少

我的回答是:通过收集未使用的对象,我们可以释放堆空间,以避免OutOfMemoryError

但在我看来,面试官并不满意


请帮助我了解Java中GC的成本。

垃圾收集涉及复杂的内存管理,可能需要重要的CPU资源。。。根据应用程序的类型和运行的JVM,有各种GC策略

如果应用程序创建并释放大量内存,垃圾收集可能会占用“一些”不可忽略的CPU,甚至可能会将应用程序锁定一段时间

根据您申请的目的,这可能是可接受的,也可能是不可接受的。您必须根据需要选择GC策略。本文解释了OpenJDK()的5种策略


选择正确的GC策略是周期性JVM阻塞与总体效率和性能之间的折衷

java中的GC被抽象到JVM中,并且可能在不同的时间发生,具体取决于JVM正在运行什么。您的答案如何描述“成本”?成本是为了完成任务而需要花费的资源,例如内存和处理时间。“垃圾收集的成本是多少”意思是“在垃圾收集上花费了多少内存和处理时间?”简单明了:GC的成本(与计算和生活中许多其他有价值的事情一样)是,它需要一些时间来完成。花在GC上的时间不是花在做程序的“真正”工作上的时间。real怀疑论者:在某种程度上同意你的观点。你能帮助我了解GC的真正成本吗?我们谈论的成本是什么,CPU周期、RAM、美元、声誉、开发、维护、硬件购置、人力资源?基线是什么,一个没有垃圾收集的假设Java?与其说它需要更多的CPU时间,不如说它需要更多的逻辑,因为GC可以在硬件而不是软件中实现。@Lee,特殊的硬件资源仍然相当于消耗CPU时间。@Holger,这几乎就是我说的,但我也说过,最好说更多的逻辑,而不是CPUtime@Lee那不一样。一个非常简单的算法(逻辑更少)仍然可能比一个复杂的算法消耗更多的CPU资源。但无论如何,这种普遍存在的“gc需要更多的逻辑/资源”断言可能不是真的。使用手动内存管理语言编写的程序需要到处调用
free
delete
调用或类似调用,这已经形成了一些逻辑,但往往被忽略,底层实现必须跟踪所有这些显式释放的内存片段,并使它们可用于新的分配,这不一定比gc的工作简单。@Holger某些程序在编写时从不分配和释放内存,除了某些算法只能用于限制之外,这些算法不会有任何惩罚。我使用的逻辑是逻辑单元的形式,而不是复杂性。另一方面,您可能是对的,因为即使是ASIC也需要一些时间,因此将占用时间和逻辑空间。无论逻辑是以LUT、机器代码字节、晶体管或其他任何形式测量的。