Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.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强制垃圾收集吗?_Java_Garbage Collection - Fatal编程技术网

Java强制垃圾收集吗?

Java强制垃圾收集吗?,java,garbage-collection,Java,Garbage Collection,JLS/JVM是否强制执行垃圾收集?据推测,任何理智的实现都会有垃圾收集,但疯狂的实现是否仍可以被称为符合规范的JVM?确切的引述如下: Java编程语言是一种相对高级的语言,因为机器表示的细节无法通过该语言获得它包括自动存储管理,通常使用垃圾收集器,以避免显式释放的安全问题 规范要求进行垃圾收集 引用JVM规范“”: Java虚拟机有一个在所有Java虚拟机线程之间共享的堆。堆是运行时数据区域,所有类实例和数组的内存都是从该区域分配的 堆是在虚拟机启动时创建的。对象的堆存储由自动存储管理系统(

JLS/JVM是否强制执行垃圾收集?据推测,任何理智的实现都会有垃圾收集,但疯狂的实现是否仍可以被称为符合规范的JVM?

确切的引述如下:

Java编程语言是一种相对高级的语言,因为机器表示的细节无法通过该语言获得它包括自动存储管理,通常使用垃圾收集器,以避免显式释放的安全问题


规范要求进行垃圾收集

引用JVM规范“”:

Java虚拟机有一个在所有Java虚拟机线程之间共享的堆。堆是运行时数据区域,所有类实例和数组的内存都是从该区域分配的

堆是在虚拟机启动时创建的。对象的堆存储由自动存储管理系统(称为垃圾收集器)回收。;对象永远不会显式解除分配。Java虚拟机不采用特定类型的自动存储管理系统,可以根据实施者的系统需求选择存储管理技术。堆可以是固定大小的,也可以根据计算需要进行扩展,如果不需要更大的堆,则可以收缩堆。堆的内存不需要是连续的


JVM实现者不会实现“疯狂”的实现。@hagrawal,疯狂的实现对于研究目的很有用。例如,在JMM下执行所有允许的转换(即使这些转换是无意义的)的虚拟机可用于实现恶意虚拟机,以测试库的线程安全。@8472仍然没有使其“疯狂”。更像是个人实现,而不是分布式实现,在个人实现中,你可以做任何事情,但它不适合任何标记。有趣的是,JLS区分了自动存储管理和垃圾收集,但JVM规范说它们是同义词。@PaulBoddington是的,我也注意到了这一点,将你的引文与我的引文进行比较。括号内的(称为垃圾收集器)可能被解释为他们对规范实现的想法的溢出。下面的句子立即后退“假设没有特定类型的自动存储管理”。总的来说有些矛盾。自动存储管理可能意味着“在需要时扩展堆,在没有更多可用虚拟地址空间时抛出OOM,永远不要回收”。当gc发生时,像
System.gc
或终结器这样的事情都不能保证,它可能会被无限期推迟。谢谢您的参考。我接受另一个答案只是因为我只能接受一个。