【问题标题】:Is it possible to check heap memory usage by pool?是否可以按池检查堆内存使用情况?
【发布时间】:2015-10-06 17:27:22
【问题描述】:

我一直致力于优化一个存在大量内存泄漏问题的程序。泄漏现在已经消失,但主要 GC 的偶尔运行仍然对 PS 老一代产生了很好的影响。我知道我可以通过 Runtime 检查基本的整体内存信息,但是是否可以从程序中检查 PS eden、PS 幸存者和 PS old 中的使用情况?

【问题讨论】:

    标签: java optimization memory-leaks heap-memory


    【解决方案1】:

    这个article可以帮到你

    您可以编写自定义代码来分析内存和输出格式

    collection time: 82037
    collection count: 116
    PS Survivor Space: init = 1703936(1664K) used = 65536(64K) committed = 32047104(31296K) max = 32047104(31296K)
    PS Eden Space: init = 10551296(10304K) used = 0(0K) committed = 69795840(68160K) max = 113049600(110400K)
    PS Old Gen: init = 27983872(27328K) used = 239432344(233820K) committed = 357957632(349568K) max = 357957632(349568K)
    Code Cache: init = 2555904(2496K) used = 19949568(19482K) committed = 20185088(19712K) max = 50331648(49152K)
    PS Perm Gen: init = 21757952(21248K) used = 148450536(144971K) committed = 155058176(151424K) max = 268435456(262144K)
    

    read

    【讨论】:

      【解决方案2】:

      您可以使用 Runtime 类来获取堆内存详细信息。

      public class GetHeapMemory {
          public static void main(String[] args) {
              System.out.println(Runtime.getRuntime().freeMemory());
              System.out.println(Runtime.getRuntime().maxMemory());
              System.out.println(Runtime.getRuntime().totalMemory());
          }
      }
      

      【讨论】:

        【解决方案3】:

        jstat Tool - Java虚拟机统计监控工具是用来监控JVM使用情况的东西。

        请通过link:

        【讨论】:

        • 除非我不理解,否则这不是我想要的。我说的是从正在运行的程序中监视它。我知道从控制台进行检查的选项。
        猜你喜欢
        • 2012-01-03
        • 1970-01-01
        • 2011-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        • 2011-02-25
        相关资源
        最近更新 更多