java - 堆内存超过阈值后的 Java 垃圾收集
问题描述
每次堆内存超过特定阈值时,是否可以在 java 中调用强制垃圾回收?
解决方案
这已经发生了。例如在 中G1GC
,这要么是年轻空间已满(对于次要收集),要么是在InitiatingHeapOccupancyPercent
被命中时(对于主要收集)。这两者都是通过标志控制的,所以你可以知道什么时候应该触发 GC,如果你真的想要那个。
在Shenandoah
那里ShenandoahGCHeuristics
会选择一些启发式方法(它们也取决于大小)。
另一方面,如果您想以编程方式执行此操作(已经有工具可以执行此操作),您可以编写一些代码来检查堆的大小(例如 via ManagementFactory::getMemoryPoolMXBeans
),然后通过 agent call。一般来说,你需要一个很好的理由来做这件事。
推荐阅读
- java - 使用枚举创建安全工厂实例
- npm - 通过 npm 卸载 quasar-cli 不起作用?
- asp.net-core - EF Core 3.1 如何包含拥有实体的嵌套属性
- flutter - Flutter中如何获取一个存储的极端根目录?
- php - PHP - 通过循环解析嵌套的 JSON 数组
- android - 是否可以在主活动(Android)中调用另一个活动的静态类中定义的方法?
- python - BeautifulSoup 如何在具有类的 div 中查找所有 href 链接
- python - Post 方法在 updateview django 中不起作用
- javascript - 如何检查是否存在具有相同键的对象并使用数组(javascript)中的相同键和不同属性进行更新?
- django - 显示特定作者每篇文章的浏览次数