精华内容
下载资源
问答
  • java.lang.Runtime类提供了查看当前JVM内存的使用情况。每个java实例(即虚拟机实例)只有一个Runtime的实例,通过Runtime.getRuntime()可以得到当前虚拟机中的Runtime实例对象。Runtime提供3个方法可以获取当前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真正还可以再继续使用的内存(不考虑之后垃圾回收再次得到的内存)。由【最大内存 - 已分配内存 + 已分配内存中的剩余空间】计算得到。

    展开全文
  • java查看jvm内存使用情况(2012-03-22 15:50:54)标签:jvm内存虚拟机分配itjava.lang.Runtime类提供了查看当前JVM内存的使用情况。每个java实例(即虚拟机实例)只有一个Runtime的实例,通过Runtime.getRuntime()可以...

    java查看jvm内存使用情况

    (2012-03-22 15:50:54)

    标签:

    jvm

    内存

    虚拟机

    分配

    it

    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真正还可以再继续使用的内存(不考虑之后垃圾回收再次得到的内存)。由【最大内存 - 已分配内存

    + 已分配内存中的剩余空间】计算得到。

    分享:

    a4c26d1e5885305701be709a3d33442f.png喜欢

    0

    a4c26d1e5885305701be709a3d33442f.png赠金笔

    加载中,请稍候......

    评论加载中,请稍候...

    发评论

    登录名: 密码: 找回密码 注册记住登录状态

    昵   称:

    评论并转载此博文

    a4c26d1e5885305701be709a3d33442f.png

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

    展开全文
  • 命令格式jstat [Options] vmid [interval] [count]Options,选项,我们一般使用 -gcutil 查看gc情况vmid,VM的进程号,即当前运行的java进程号interval,间隔时间,单位为秒或者毫秒count,打印次数,如果缺省则打印...

    命令格式

    jstat [Options] vmid [interval] [count]

    Options,选项,我们一般使用 -gcutil 查看gc情况

    vmid,VM的进程号,即当前运行的java进程号

    interval,间隔时间,单位为秒或者毫秒

    count,打印次数,如果缺省则打印无数次

    通常运行命令如下:

    jstat -gc 30736 5000 5

    a305829a7613

    结果说明

    显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):

    S0C:年轻代中第一个survivor(幸存区)的容量 (字节)

    S1C:年轻代中第二个survivor(幸存区)的容量 (字节)

    S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

    S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

    EC:年轻代中Eden(伊甸园)的容量 (字节)

    EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)

    OC:Old代的容量 (字节)

    OU:Old代目前已使用空间 (字节)

    PC:Perm(持久代)的容量 (字节)

    PU:Perm(持久代)目前已使用空间 (字节)

    YGC:从应用程序启动到采样时年轻代中gc次数

    YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)

    FGC:从应用程序启动到采样时old代(全gc)gc次数

    FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)

    GCT:从应用程序启动到采样时gc用的总时间(s)

    NGCMN:年轻代(young)中初始化(最小)的大小 (字节)

    NGCMX:年轻代(young)的最大容量 (字节)

    NGC:年轻代(young)中当前的容量 (字节)

    OGCMN:old代中初始化(最小)的大小 (字节)

    OGCMX:old代的最大容量 (字节)

    OGC:old代当前新生成的容量 (字节)

    PGCMN:perm代中初始化(最小)的大小 (字节)

    PGCMX:perm代的最大容量 (字节)

    PGC:perm代当前新生成的容量 (字节)

    S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

    S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

    E:年轻代中Eden(伊甸园)已使用的占当前容量百分比

    O:old代已使用的占当前容量百分比

    P:perm代已使用的占当前容量百分比

    S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)

    S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)

    ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)

    DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)

    TT: 持有次数限制

    MTT : 最大持有次数限制

    展开全文
  • 1、jinfojinfo:的用处比较简单,就是能输出并修改运行时的...2、jps显示当前所有java进程pid的命令,我们可以通过这个命令来查看到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),不过jps...

    1、jinfo

    jinfo:的用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法是jinfo -opt pid 如:查看52606的MaxPerm大小可以用 jinfo -flag MaxPermSize 52606。

    8ccdb7dc393aa0ca1a5d0797e754b553.png

    2、jps

    显示当前所有java进程pid的命令,我们可以通过这个命令来查看到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),不过jps有个缺点是只能显示当前用户的进程id,要显示其他用户的还只能用linux的ps命令。

    9d3eb64e50625b2486a429d3ff819edc.png

    执行jps命令,会列出所有正在运行的java进程,其中jps命令也是一个java程序,前面的数字就是对应的进程id,这个id的作用非常大,后面会有相关介绍。

    jps -help:

    fb2ff5a1f351e4b2bd1f1db599cd92ae.png

    jps -l :

    b83d30e304f5c727a11d96659f1d8aab.png

    输出应用程序main.class的完整package名或者应用程序jar文件完整路径名

    jps -v: 输出传递给JVM的参数

    128d4ed83bf9683ebaf457088aed2e0a.png

    jps失效

    我们在定位问题过程会遇到这样一种情况,用jps查看不到进程id,用ps -ef | grep java却能看到启动的java进程。

    要解释这种现象,先来了解下jps的实现机制:

    java程序启动后,会在目录/tmp/hsperfdata_{userName}/下生成几个文件,文件名就是java进程的pid,因此jps列出进程id就是把这个目录下的文件名列一下而已,至于系统参数,则是读取文件中的内容。

    我们来思考下:如果由于磁盘满了,无法创建这些文件,或者用户对这些文件没有读的权限。又或者因为某种原因这些文件或者目录被清除,出现以上这些情况,就会导致jps命令失效。

    如果jps命令失效,而我们又要获取pid,还可以使用以下两种方法:

    1、top | grep java

    2、ps -ef |grep java

    3、jstat

    jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。

    jstat -class pid:显示加载class的数量,及所占空间等信息。

    jstat -compiler pid:显示VM实时编译的数量等信息。

    jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

    jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。

    jstat -gcnew pid:new对象的信息。

    jstat -gcnewcapacity pid:new对象的信息及其占用量。

    jstat -gcold pid:old对象的信息。

    jstat -gcoldcapacity pid:old对象的信息及其占用量。

    jstat -gcpermcapacity pid: perm对象的信息及其占用量。

    jstat -util pid:统计gc信息统计。

    jstat -printcompilation pid:当前VM执行的信息。

    除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 260 6是每260毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。

    4、jmap

    主要用于打印指定java进程的共享对象内存映射或堆内存细节。

    堆Dump是反映堆使用情况的内存镜像,其中主要包括系统信息、虚拟机属性、完整的线程Dump、所有类和对象的状态等。一般在内存不足,GC异常等情况下,我们会去怀疑内存泄漏,这个时候就会去打印堆Dump。

    jmap的用法:

    1a64062ea6e64ca3a93435649f5852e1.png

    jmap pid

    b67c4ff2b3c71ed3678565006a3614c0.png

    打印的信息分别为:共享对象的起始地址、映射大小、共享对象路径的全程。

    jmap -heap pid:查看堆使用情况

    93082295ef3d3c80d6fa2ad9ff400ab6.png

    map -histo pid:查看堆中对象数量和大小

    016037b35d150a49604fed40098cf032.png

    打印的信息分别是:序列号、Class实例的数量、内存的占用、类限定名

    如果是内部类,类名的开头会加上*,如果加上live子参数的话,如jmap -histo:live pid,这个命名会触发一次FUll GC,只统计存活对象

    展开全文
  • 更多 Java 虚拟机方面的文章,请参见文集《Java 虚拟机》首先使用 jps -l 查找当前所有的 Java 进程。jstat 命令jstat -gc pid 1000 或者 jstat -gc pid 1000 > out.txt: 每隔1000号码打印一次或导出 GC 的状态...
  • jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。详细:在使用...
  • 查看一个应用中java对象的内存占用情况。 Step 1、先查找出应用的主进程 ps -audongxx | grep java 发现web进程的pid=753 Step2、通过jmap命令 dump出web应用的内存使用情况,并把结果放在当前目录下的heap....
  • JAVA WEB项目有时候出现内存溢出的情况,但是在本地tomcat下又实在无法重现出来。查了下API,发现Java提供了Runtime类:public class Runtimeextends Object每个 Java 应用程序都有一个 Runtime 类实例,使应用程序...
  • Java通过jvm自己管理内存,同时Java提供了一些命令行工具,用于查看内存使用情况。这里主要介绍一下jstat、jmap命令以及相关工具。一、jstat查看gc实时执行情况jstat命令命令格式:jstat [Options] vmid [interval] ...
  • Java 查看内存的方法

    2014-07-07 14:57:17
    * 获取当前系统已使用内存 * */ public static long getSystemMemory(){ Runtime runtime = Runtime.getRuntime(); long total = runtime.totalMemory();//总内存 long free = runtime.freeMemory();//空闲内存...
  • java如何查看内存当前运行的函数。 使用System.out.print()打印出来
  • java.lang.Runtime类提供了查看当前JVM内存的使用情况。每个java实例(即虚拟机实例)只有一个Runtime的实例,通过Runtime.getRuntime()可以得到当前虚拟机中的Runtime实例对象。Runtime提供3个方法可以获取当前JVM...
  • JAVA虚拟内存查看

    2012-02-21 11:29:43
    java.lang.Runtime类提供了查看当前JVM内存的使用情况。每个java实例(即虚拟机实例)只有一个Runtime的实例,通过Runtime.getRuntime()可以得到当前虚拟机中的Runtime实例对象。 Runtime提供3个方法可以获取当前JVM...
  • java-jvm堆内存查看

    2021-02-18 13:48:53
    jvm堆内存查看jmap 查询堆内存占用情况jconsole 查询堆内存占用情况jvisualvm 查询堆内存占用情况 jmap 查询堆内存占用情况 jmap -heap 进程id jconsole 查询堆内存占用情况 jconsole是jdk就带有的一个功能 ...
  • 查看TomcatJVM内存占用:TOMCAT运行时,实时监控当前应用JVM的使用情况;可以利用Tomcat自带的应用manager查看详情。首先,确认服务目录webapps下有manager应用其次,需要创建角色manager和对应的用户,修改/conf/...
  • Java内存使用情况查看工具

    千次阅读 2018-05-29 15:04:32
    Java通过jvm自己管理内存,同时Java提供了一些命令行工具,用于查看内存使用情况。这里主要介绍一下jstat、jmap命令以及相关工具。一、jstat查看 gc实时执行情况jstat命令命令格式:jstat [Options] vmid [interval...
  • 查看java虚拟机内存GC的情况

    千次阅读 2018-08-28 22:29:17
    通过ps命令查询PID ...使用jmap查看进程中内存分代使用的情况 jmap -heap [PID] dump转存 jvm的Heap当前情况,然后可以通过mat工具进行分析jvm的head情况 jmap -dump:live,format=b,file=/tmp/***...
  • java输出查看JVM占用内存:

    千次阅读 2019-07-23 18:40:46
    //当前JVM占用的内存总数(M) double total = (Runtime.getRuntime().totalMemory()) / (1024.0 * 1024); //JVM最大可用内存总数(M) double max = (Runtime.getRuntime().maxMemory()) / (1024.0 * 1024); ...
  • 1、使用命令:top查看当前进程的状态 2、从上图可以看到PID:916的java进程占用内存较大。定位线程问题(通过命令查看PID 为25894 进程的线程情况),命令:#ps p 916 -L -o pcpu,pmem,pid,tid,time,tname,cmd ...
  • 软件152笪世海1....查看当前Java虚拟机最大堆内存, 敲入:java.lang.Runtime.getRuntime.maxMemory3.查看Java虚拟机版本.敲入:version -java4.在 $MATLAB\bin\$ARCH 路径下新建java.opts文件.$MATL...
  • 详解JVM 运行时内存使用情况监控java 语言, 开发者不能直接控制程序运行内存, 对象的创建都是由类加载器一步步解析, 执行与生成与内存...注: 查看系统里java进程信息// 查看当前机器上所有运行的java进程名称与pid(...
  • 如下图:解决方法:A:可能是代码原因导致的问题:1、使用命令:top查看当前进程的状态2、从上图可以看到PID:916的java进程占用内存较大。定位线程问题(通过命令查看PID 为25894 进程的线程情况),命令:# ps p 916 -...
  • java程序员除了编写业务代码之外,特别是项目...1. jmap这个命令是用来查看当前系统中jvm进程 heap dump的情况,包括对象的数量,对象所占内存的大小使用方式:先使用jps查看进程id使用 jmap -dump:live,file=b.map...
  • 通过如下命令可以查看当前版本Java内存参数java -X-Xmixed mixed mode execution (default)-Xint interpreted mode execution only-Xbootclasspath:set search path for bootstrap classes and resources-...
  • 如题,我只找到了诸如runtime类与getsystemcpuload方法之类的能够获得整个系统占用率的,如何针对当前应用或进程呢?
  • java内存、垃圾回收查看与分析

    千次阅读 2018-03-23 21:24:34
    Java 内存查看与分析 首先使用 jps -l 查找当前所有的 Java 进程。jstat 命令jstat -gc pid 1000 或者 jstat -gc pid 1000 > out.txt: 每隔1000号码打印一次或导出 GC 的状态。S0C S0U:Survivor 0区的大小...
  • JAVA内存调优

    2020-10-31 15:42:07
    使用Java -XX:+PrintFlagsInitial命令查看本机的初始化参数 引用类型 对象引用类型分为强引用、软引用、弱引用和虚引用。 强引用:就是我们一般声明对象是时虚拟机生成的引用,强引用环境下,垃圾回收时需要严格判断...
  • java.lang.Runtime类提供了java.lang.Runtime类提供了查看当前JVM内存的使用情况。每个java实例(即虚拟机实例)只有一个Runtime的实例,通过Runtime.getRuntime()可以得到当前虚拟机中的Runtime实例对象。 ...
  • 1. 常用DOS命令:dir(directory):列出当前目录文件及文件夹exit:退出dos命令行cls(clear screen):清屏ipconfig:查看ipping:尝试请求某个IP或地址,并发送数据包2. 键盘快捷键:ctrl+s:保存...3. Java的优势、特点:*...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 758
精华内容 303
关键字:

java查看当前内存

java 订阅