应用程序描述: 我有一个 JAVA 应用程序,用于生成图表。用户可以根据自己的需要借助 GUI 来设置图表。
问题描述: 创建图表时会使用一定量的内存,并且当创建新图表时,GC 不会自动清除前一个图表使用的内存,但是,如果我插入 System.gc() 语句,则会清除内存。我希望内存在每次生成新图表时清除所有死对象。
问题为什么 GC 不能像 Java 中那样自动工作? 感谢您的投入。
最佳答案
在 java 中,无法保证垃圾收集器何时运行。这个想法是您不必担心内存。当您需要内存时,垃圾收集器现在应该已经清理了足够的空间。
如果它在您需要时无法清除足够的空间,那么您将收到 OutOfMemoryError
。
System.gc()是一个提示,可帮助通知垃圾收集器何时是垃圾收集的好时机。但它不一定会启动垃圾收集器。
关于Java gc 不会自动清理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19665390/