相关疑难解决方法(0)

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

我们在Jboss上运行了一个j2ee应用程序,我们希望监视它的内存使用情况.目前我们使用以下代码

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

这段代码工作正常.这意味着它显示了与现实相对应的记忆曲线.当我们从DB创建一个大的xml文件时,曲线会上升,在提取完成后,它会下降.

替代文字

一位顾问告诉我们,明确调用gc()是错误的,"让jvm决定何时运行gc".基本上他的论点与此处讨论的相同.但我还是不明白:

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

java monitoring garbage-collection memory-management

60
推荐指数
9
解决办法
17万
查看次数

我的java线程需要多少内存?

有没有办法找出我的java线程在VM中占用多少内存?

例如,使用堆栈跟踪转储或其他一些方法.

谢谢

java multithreading

17
推荐指数
1
解决办法
2万
查看次数