赞
踩
启动如下程序:
-q: 仅显示ID
-l 输出程序的全限定名
-m 输出进程启动时传递给main的参数
-v 列出JVM参数
通过jps名称查看进程详细信息:
1、jps
2、jps -q
3、jps -l
4、jps -m
在idea上添加参数
5、jps -v
在idea上设置一下jvm参数
如果Java进程关闭了默认开启的UserPerfData
参数,则jps无法探测。
在idea上配置 -XX:-UsePerfData
可以发现上面看不到JpsTest的进程了
jstat( JVM Statistics Monitoring TooL):
用于监视虛拟机各种运行状态信息的命令行工具。它可以是示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
在没有GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的首选工具。常用于检测垃圾回收问题以及内存泄漏问题
显示ClassLoader的相关信息 ,测试程序依旧使用上面的程序JpsTest
显示gc相关的堆信息,查看gc的次数,及执行时间
注意:上面的-class以及-gc都可以添加interval参数,持续打印,例如我们打印-class
jstat -class 5064 1000 表示每个1秒打印一次,便于我们持续的去监控
当然我们也可以指定打印的次数,添加count参数,比如打印10次
jstat -class 5064 1000 10 表示每个1秒打印一次,共打印10次
jstat -class -t 5064 1000 10 表示每个1秒打印一次,共打印10次,并且前面加上日期
jstat -class -t -h5 5064 1000 10 表示每个1秒打印一次,共打印10次,并且前面加上日期,5行内容之后输入一次表头信息
命令:jstat -compiler 5064
命令:jstat -printcompilation 5064
- package com.kgf.kgfjavalearning2021.jvm;
-
- import java.util.ArrayList;
-
- /***
- * 测试GC的频率:
- * 设置内存大小:-Xmx60m -XX:SurvivorRatio=8
- *
- * -Xmx60m: 表示是最大堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你
- * -XX:SurvivorRatio=8:
- * 设置新生代中eden和S0/S1空间的比例
- * 默认
- * -XX:SurvivorRatio=8,Eden:S0:S1=8:1:1
- * 假如
- * -XX:SurvivorRatio=4,Eden:S0:S1=4:1:1
- * SurvivorRatio值就是设置Eden区的比例占多少,S0/S1相同
- *
- */
- public class GCTest {
-
- public static void main(String[] args) {
-
- ArrayList<byte[]> list = new ArrayList<>();
-
- for (int i = 0; i < 1000; i++) {
- byte[] arr = new byte[1024*100];//每次向list中存放100kb的字节数组
- list.add(arr);
- try {
- Thread.sleep(100);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
-
- }
设置堆内存内存最大60M,那么各自区域所占的内存如下:
新生代+老年代=60m
新生代 : 老年代 = 1:2
新生代:20M
老年代:40M
新生代 = Eden+S0+S1 = 20M
Eden:S0:S1 = 8:1:1
所以最后结果如下:
Eden:16M
S0: 2M
S1:2M
在idea中设置堆内存:
启动程序,使用jstat命令查看:
命令:jstat -gc -t 2504 1000 30 表示表示每个1秒打印一次,共打印30次,并且前面加上日期
C:\Users\86136>jps 13524 Jps 5252 12664 KotlinCompileDaemon 2504 GCTest 4904 Launcher 7100 RemoteMavenServer C:\Users\86136>jstat -gc -t 2504 1000 30 Timestamp S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 19.0 2048.0 2048.0 0.0 2032.2 16384.0 5759.2 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 20.0 2048.0 2048.0 0.0 2032.2 16384.0 6567.6 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 21.0 2048.0 2048.0 0.0 2032.2 16384.0 7376.1 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 22.0 2048.0 2048.0 0.0 2032.2 16384.0 8184.5 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 23.1 2048.0 2048.0 0.0 2032.2 16384.0 9397.2 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 24.0 2048.0 2048.0 0.0 2032.2 16384.0 10205.7 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 25.1 2048.0 2048.0 0.0 2032.2 16384.0 11014.1 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 26.1 2048.0 2048.0 0.0 2032.2 16384.0 12226.8 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 27.1 2048.0 2048.0 0.0 2032.2 16384.0 13035.3 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 28.1 2048.0 2048.0 0.0 2032.2 16384.0 13843.7 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 29.1 2048.0 2048.0 0.0 2032.2 16384.0 14652.2 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 30.1 2048.0 2048.0 0.0 2032.2 16384.0 15864.9 40960.0 11116.1 4864.0 3733.9 512.0 410.2 1 0.003 0 0.000 0.003 31.1 2048.0 2048.0 0.0 0.0 16384.0 100.0 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 32.1 2048.0 2048.0 0.0 0.0 16384.0 1012.4 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 33.1 2048.0 2048.0 0.0 0.0 16384.0 2012.6 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 34.1 2048.0 2048.0 0.0 0.0 16384.0 2912.7 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 35.2 2048.0 2048.0 0.0 0.0 16384.0 3812.8 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 36.2 2048.0 2048.0 0.0 0.0 16384.0 4813.0 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 37.2 2048.0 2048.0 0.0 0.0 16384.0 5713.1 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 38.2 2048.0 2048.0 0.0 0.0 16384.0 6613.3 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 39.2 2048.0 2048.0 0.0 0.0 16384.0 7513.4 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 40.2 2048.0 2048.0 0.0 0.0 16384.0 8413.6 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 41.2 2048.0 2048.0 0.0 0.0 16384.0 9313.7 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 42.2 2048.0 2048.0 0.0 0.0 16384.0 10213.8 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 43.2 2048.0 2048.0 0.0 0.0 16384.0 11214.0 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 44.2 2048.0 2048.0 0.0 0.0 16384.0 12114.1 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 45.3 2048.0 2048.0 0.0 0.0 16384.0 13014.3 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 46.3 2048.0 2048.0 0.0 0.0 16384.0 13914.4 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 47.3 2048.0 2048.0 0.0 0.0 16384.0 14814.6 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 48.2 2048.0 2048.0 0.0 0.0 16384.0 15714.7 40960.0 29273.4 4864.0 3734.0 512.0 410.2 2 0.007 1 0.010 0.017 C:\Users\86136>那么通过上面的信息我们能够发现什么呢?
EU :年轻代中Eden(伊甸园)已使用的容量 (字节)可以发现已经满了16M
OU :Old代目前已使用空间 (字节),可以发现上面已经使用完了40M,所以程序应该会发生内存溢出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。