gpt4 book ai didi

java - 如何监控垃圾回收以查看哪些内容被GC了?

转载 作者:行者123 更新时间:2023-12-01 20:54:16 25 4
gpt4 key购买 nike

我有一个巨大的 Java 应用程序(运行 Jdk7 64 位,Weblogic 12)。在没有任何人调用的情况下运行应用程序 - 也就是闲置。我可以看到每 3-4 分钟就会出现 300Mb 的峰值,然后使用 Visual vm 对其进行垃圾收集。

enter image description here

我获取了多个堆栈跟踪,并且在获取时没有任何内容处于繁忙状态。我们还利用 EHCache 并添加日志记录来记录结果。应用程序启动并运行后,我在日志中看不到任何内容(当它空闲时),但仍然会发生 300mb 的垃圾收集。

当已用空间较低且之后为 300mb 时进行堆转储,使用 Eclipse 内存分析器不会显示出太大差异,内存分配看起来相同:

enter image description here

有没有办法查看正在垃圾收集的内容?我确实知道会有不断的收集,但 300mb 可以吗?

最佳答案

您的内存行为没有问题。即使您的应用程序处于空闲状态,也会发生许多事情,从而导致您观察到的内存分配。我假设您正在监视包括年轻代在内的总堆。因此分配的每个对象都会显示在您的图表上。每 3-4 分钟进行一次年轻 GC 绝对正常,每次只需要几毫秒。

所以我会切换到仅监视老年代,并且您将得到一条非常平坦的线,并且根本没有 GC。

关于java - 如何监控垃圾回收以查看哪些内容被GC了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42630466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com