Java强制垃圾收集吗?
JLS/JVM是否强制执行垃圾收集?据推测,任何理智的实现都会有垃圾收集,但疯狂的实现是否仍可以被称为符合规范的JVM?确切的引述如下: Java编程语言是一种相对高级的语言,因为机器表示的细节无法通过该语言获得它包括自动存储管理,通常使用垃圾收集器,以避免显式释放的安全问题Java强制垃圾收集吗?,java,garbage-collection,Java,Garbage Collection,JLS/JVM是否强制执行垃圾收集?据推测,任何理智的实现都会有垃圾收集,但疯狂的实现是否仍可以被称为符合规范的JVM?确切的引述如下: Java编程语言是一种相对高级的语言,因为机器表示的细节无法通过该语言获得它包括自动存储管理,通常使用垃圾收集器,以避免显式释放的安全问题 规范要求进行垃圾收集 引用JVM规范“”: Java虚拟机有一个在所有Java虚拟机线程之间共享的堆。堆是运行时数据区域,所有类实例和数组的内存都是从该区域分配的 堆是在虚拟机启动时创建的。对象的堆存储由自动存储管理系统(
规范要求进行垃圾收集 引用JVM规范“”: Java虚拟机有一个在所有Java虚拟机线程之间共享的堆。堆是运行时数据区域,所有类实例和数组的内存都是从该区域分配的 堆是在虚拟机启动时创建的。对象的堆存储由自动存储管理系统(称为垃圾收集器)回收。;对象永远不会显式解除分配。Java虚拟机不采用特定类型的自动存储管理系统,可以根据实施者的系统需求选择存储管理技术。堆可以是固定大小的,也可以根据计算需要进行扩展,如果不需要更大的堆,则可以收缩堆。堆的内存不需要是连续的
JVM实现者不会实现“疯狂”的实现。@hagrawal,疯狂的实现对于研究目的很有用。例如,在JMM下执行所有允许的转换(即使这些转换是无意义的)的虚拟机可用于实现恶意虚拟机,以测试库的线程安全。@8472仍然没有使其“疯狂”。更像是个人实现,而不是分布式实现,在个人实现中,你可以做任何事情,但它不适合任何标记。有趣的是,JLS区分了自动存储管理和垃圾收集,但JVM规范说它们是同义词。@PaulBoddington是的,我也注意到了这一点,将你的引文与我的引文进行比较。括号内的(称为垃圾收集器)可能被解释为他们对规范实现的想法的溢出。下面的句子立即后退“假设没有特定类型的自动存储管理”。总的来说有些矛盾。自动存储管理可能意味着“在需要时扩展堆,在没有更多可用虚拟地址空间时抛出OOM,永远不要回收”。当gc发生时,像
System.gc
或终结器这样的事情都不能保证,它可能会被无限期推迟。谢谢您的参考。我接受另一个答案只是因为我只能接受一个。