zoukankan      html  css  js  c++  java
  • 使用代码查看JVM内存使用情况

    java.lang.Runtime类提供了查看当前JVM内存的使用情况。每个java实例(即虚拟机实例)只有一个Runtime的实例,通过Runtime.getRuntime()可以得到当前虚拟机中的Runtime实例对象。

    Runtime提供3个方法可以获取当前JVM最大可以使用内存、当前JVM已拥有最大内存和剩余未使用内存。这3个内存指的都是JVM堆内存。 

    Runtime.maxMemory(); 

    Runtime.totalMemory(); 

    Runtime.freeMemory(); 



    首先在JAVA的启动参数中加入指定-Xmx100m,设置JVM堆最大可以使用100m的内存。 

    Runtime run = Runtime.getRuntime(); 

    long max = run.maxMemory(); 

    long total = run.totalMemory(); 

    long free = run.freeMemory(); 

    long usable = max - total + free; 

    System.out.println("最大内存 = " + max); 
    System.out.println("已分配内存 = " + total); 
    System.out.println("已分配内存中的剩余空间 = " + free); 
    System.out.println("最大可用内存 = " + usable); 



    上面代码的输出结果如下(这些内存大小与运行环境相关) 

    最大内存 = 104071168 
    已分配内存 = 5177344 
    已分配内存中的剩余空间 = 4937280 
    最大可用内存 = 103831104 



    最大内存(maxMemory)是通过启动JAVA虚拟机时使用参数-Xmx100m指定的,而输出也确实是100m。这表示JVM的堆内存最大可以使用104071168字节。 

    已分配内存(totalMemory)jvm使用的内存都是从本地系统获取的,但是通常jvm刚启动的时候,并不会向系统申请全部的内存。而是根据所加载的Class和相关资源的容量来决定的。在本例中,由于只在一个main()主方法中执行了上面的几行简单的代码。所以JVM只申请了5177344字节的内存。 

    已分配内存中的剩余空间(freeMemory) 这是相对以分配内存(totalMemeory)计算的,相当于totalMemory - 已使用内存。当freeMemory 快要接近0时,以分配的内存即将耗尽,JVM会决定再次向系统申请更多的内存。 

    最大可用内存 (usable)这是JVM真正还可以再继续使用的内存(不考虑之后垃圾回收再次得到的内存)。由【最大内存 - 已分配内存 + 已分配内存中的剩余空间】计算得到。

  • 相关阅读:
    linux LTIB学习笔记
    wince WaitForMultipleObjects需要注意的问题
    微信小程序在苹果上出现[request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。]错误的解决方案
    Windows 2008之PKI实战4:吊销
    十个不找工作的理由
    [zt]我奋斗了18年不是为了和你一起喝咖啡
    [zt]Java/PHP/C 几种语言 RSA 的互操作
    全职共享和兼职的一些思考pkill
    定价策略(翻译稿)
    Windows 2008之PKI实战1:管理
  • 原文地址:https://www.cnblogs.com/gaoBlog/p/10844119.html
Copyright © 2011-2022 走看看