gpt4 book ai didi

java - 如何监控 Java 内存使用情况?

转载 作者:IT老高 更新时间:2023-10-28 20:23:19 26 4
gpt4 key购买 nike

我们有一个在 Jboss 上运行的 j2ee 应用程序,我们想要监控它的内存使用情况。目前我们使用以下代码

    System.gc();
Runtime rt = Runtime.getRuntime();
long usedMB = (rt.totalMemory() - rt.freeMemory()) / 1024 / 1024;
logger.information(this, "memory usage" + usedMB);

此代码运行良好。这意味着它显示了与现实相对应的内存曲线。当我们从数据库创建一个大的 xml 文件时,曲线上升,提取完成后曲线下降。

alt text

一位顾问告诉我们,显式调用 gc() 是错误的,“让 jvm 决定何时运行 gc”。基本上他的论点与 disscussed here 相同。 .但我还是不明白:

  • 如何获得我的内存使用曲线?
  • 显式 gc() 有什么问题?我不关心显式 gc() 可能发生的小性能问题,我估计在 1-3% 之间。我需要的是内存和线程监视器,它可以帮助我在客户站点上分析我们的系统。

最佳答案

如果您想真正了解虚拟机内存中发生的情况,您应该使用像 VisualVM 这样的好工具。 .这是免费软件,是了解正在发生的事情的好方法。

明确的 gc() 调用并没有真正“错误”。但是,请记住,当您调用 gc() 时,您是在“建议”垃圾收集器运行。无法保证它会在您运行该命令的确切时间运行。

关于java - 如何监控 Java 内存使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1058991/

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