Java gc 不会自动清理内存

标签 java memory garbage-collection

应用程序描述: 我有一个 JAVA 应用程序,用于生成图表。用户可以根据自己的需要借助 GUI 来设置图表。

问题描述: 创建图表时会使用一定量的内存,并且当创建新图表时,GC 不会自动清除前一个图表使用的内存,但是,如果我插入 System.gc() 语句,则会清除内存。我希望内存在每次生成新图表时清除所有死对象。

问题为什么 GC 不能像 Java 中那样自动工作? 感谢您的投入。

最佳答案

在 java 中,无法保证垃圾收集器何时运行。这个想法是您不必担心内存。当您需要内存时,垃圾收集器现在应该已经清理了足够的空间。

如果它在您需要时无法清除足够的空间,那么您将收到 OutOfMemoryError

System.gc()是一个提示,可帮助通知垃圾收集器何时是垃圾收集的好时机。但它不一定会启动垃圾收集器。

关于Java gc 不会自动清理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19665390/

相关文章:

linux - 如何获得内核空间的大小?

java - Java 中不分配返回值的非 void 方法调用

java - 是否可以不安全地访问 JVM 未使用的对象?

garbage-collection - BeginReceive/SocketAsyncEventArgs ArraySegments 列表

c++ - 显着增加内存的使用

python - python 中的多线程 I/O 减慢

java - 如何更新 Java 构造函数、equals、hash 等。在 eclipse ?

java - Spring MVC WebApp 中的推送通知

java - Axis2 Web 服务框架的问题

java - 2.0.9 和 2.1.0 之间的 Spring Boot eclipselink ddl 自动生成问题