Java 当GC不';t(必须)运行并且程序完成它的执行?
考虑一个很短的程序,在这个程序中我分配了一点内存。我被教导,GC在程序分配大量内存并且分配达到极限的情况下运行 我不知道这个限制到底是什么,但我认为它必须足够高,这样GC就不会频繁运行,从而降低程序的执行速度Java 当GC不';t(必须)运行并且程序完成它的执行?,java,memory-management,Java,Memory Management,考虑一个很短的程序,在这个程序中我分配了一点内存。我被教导,GC在程序分配大量内存并且分配达到极限的情况下运行 我不知道这个限制到底是什么,但我认为它必须足够高,这样GC就不会频繁运行,从而降低程序的执行速度 我的问题是,在程序的生命周期内,当分配没有达到GC准备运行的级别时会发生什么。它会导致内存泄漏吗?不会发生任何特定的情况。粗略地说:分配给java进程的内存返回堆。 更具体地说:JVM使用本机内存为java进程分配内存。java进程终止后,该内存对于操作系统中的其他进程是可用的。 我建议您
我的问题是,在程序的生命周期内,当分配没有达到GC准备运行的级别时会发生什么。它会导致内存泄漏吗?不会发生任何特定的情况。粗略地说:分配给java进程的内存返回堆。 更具体地说:JVM使用本机内存为java进程分配内存。java进程终止后,该内存对于操作系统中的其他进程是可用的。
我建议您阅读更多关于这方面的内容,例如:垃圾收集不仅仅在没有更多内存时运行,并行收集器实际上在另一个线程中运行,并在确定有时间时进行收集,但这不是唯一的策略
如果您的问题是:如果JVM在GC运行之前结束,内存会发生什么变化 非常简单:完整的内存被“返回”到操作系统,并再次对操作系统可用 简言之:
最后,“heap”是JVM内部使用内存的方式。操作系统只知道它提供给JVM的绝对内存块。顺便说一句,这与JDKEN无关,即使内存来自堆?