让我们想起一个内存泄漏程序,其中堆内存块未被释放并且程序终止。如果这是一个Java程序,内置的垃圾回收器会在程序退出之前自动释放这个堆块。内存泄漏 - 缺少垃圾回收器
但即使在C++中,如果程序退出,内核是否会自动解除与进程相关的所有空间。同样在Java代码中,内核必须为进程的文本部分(代码)取消分配空间(即使堆栈和堆部分被垃圾回收器解除分配)。那么使用垃圾收集器功能的整体优势 - 只是程序本身而不是内核释放堆所需的时间节省的增加? (如果有任何这样的节省)
编辑:我的主要疑问来看看答复 - 当内存使用量达到极限时,GC会自动调用自己吗?因为如果只在程序终止之前调用GC,则对于长程序而言,它不会有用。
如果您的程序要运行很长时间会怎么样?在这种情况下,程序可以分配所有可用内存,当然也会失败。因此,即使操作系统在终止时释放内存,程序也必须对其分配的内存负责。 – Isaac
这将取决于。在程序中可以随时调用Java中的GC吗?通过调用我的意思是它可以自动触发内存使用量达到极限时?因为如果只有在程序终止时才调用GC,对于长时间运行的程序来说,这无关紧要。 – Hari