完成Java程序后,Vue Router
,young gen
,old gen
将被完全垃圾收集,这里的垃圾收集器也是一个程序,因此谁来为垃圾收集器做垃圾收集?垃圾收集器?还是会那样退出?
答案 0 :(得分:4)
您的问题是基于一些误解。
在完成Java程序后,年轻一代,老一代,烫发一代将被全部垃圾收集。
这不会发生。
Java程序完成后,JVM退出。发生这种情况时,JVM进程将退出,并且操作系统将回收其地址空间。那时,整个堆(在JVM进程地址空间中)就不复存在了。
对象不会被垃圾收集,终结或其他任何形式。取而代之的是,保存对象表示形式的内存已被操作系统收回,并且再也不会被看到 1 。
这里的垃圾收集器也是一个程序,那么谁来为垃圾收集器进行垃圾收集呢?还是会那样退出?
垃圾收集器不是程序。
1-即...除非您可以说服操作系统将其提供给您;否则,例如以“核心转储”的形式,或者通过在页面清零之前在虚拟内存系统中四处浏览。
2-GC可能会分配堆对象来保存GC状态或GC日志消息...但是我认为它为那些事情使用了非堆内存。无论哪种方式,为这些目的分配的内存量都应该太小而不必在意。
答案 1 :(得分:1)
当Java程序完成后,您的JVM将为exit/shutdown
,并且JVM
占用的全部内存将变为可用。因此,在这种情况下,无需GC
。
答案 2 :(得分:1)
垃圾收集器是Java虚拟机的一部分,它要做的更多,而不仅仅是垃圾收集。程序结束时,整台计算机都将关闭,并释放所有已使用的内存(包括垃圾收集器)
答案 3 :(得分:1)
启动任何进程时,其内存都来自操作系统。
该过程结束时,所有内存都将返回该操作系统。
因此,第二个jvm进程结束,其所有内存再次变为“空闲”。