JVM小工具
- jps:打印Hotspot VM进程(VMID、JVM、参数、main()函数参数、主类名/Jar路径)
【打印线程】:输入:jps -l
2.jstat:查看Hotspot VM运行时信息(类加载、内存、GC[可分代查看]、JIT编译),命令格式:jstat -gc 12260 250 20
【查看Tomcat垃圾回收统计】:输入:jstat -gc 12260 250 20
【参数含义】
参数 | 描述 |
---|---|
S0C、S1C | Survivor区创建时大小 |
S0U、S1U | Survivor区已使用空间 |
EC | Eden区创建时大小 |
EU | Eden区已使用空间 |
OC | 老年代创建时大小 |
OU | 老年代已使用空间 |
MC | 方法区大小 |
MU | 方法区已使用空间 |
CCSC | 压缩类空间大小 |
CCSU | 压缩类空间使用大小 |
YGC | 年轻代垃圾回收次数 |
YGCT | 年轻代垃圾回收消耗时间 |
FGC | 老年代垃圾回收次数 |
FGCT | 老年代垃圾回收消耗时间 |
GCT | 垃圾回收消耗总时间 |
- jvisualvm:JDK中最强大的运行监视和故障处理工具(可以监控内存泄漏、跟踪垃圾回收、执行时内存分析、CPU分析、线程分析)
【使用jvisualvm】:直接输入:jvisualvm
【安装Visual GC插件】:点击工具–>插件,选中Visual GC,点击安装
安装完毕后重新启动jvisualvm,发现Visual GC已经安装成功。
点开Visual GC,就可以查看垃圾回收空间情况了
JVM参数
- 内存空间设置
No | 参数 | 描述 |
---|---|---|
1 | -Xms | 设置JVM初始内存 |
2 | -Xmx | 设置JVM最大可用内存 |
3 | -Xmn | 设置年轻代内存大小 |
4 | -XX:NewRatio | 设置年轻代和老年代的比例 |
5 | -XX:SurvivorRatio | 设置两个Survivor区和eden区的比例 |
6 | -XX:PermSize | 设置永久区的内存大小 |
7 | -XX:MaxPermSize | 设置永久区的内存最大值 |
8 | -Xss | 设置栈的大小。栈都是每个线程独有一个,所有一般都是几百k的大小 |
- 收集器设置
No | 参数 | 描述 |
---|---|---|
1 | -XX:+UseSerialGC | 设置串行收集器 |
2 | -XX:+UseParallelGC | 设置并行收集器 |
3 | -XX:+UseParalledOldGC | 设置并行老年代收集器 |
4 | -XX:+UseConcMarkSweepGC | 设置并发收集器 |
【取得Java虚拟机使用的垃圾收集器】
import java.lang.management.GarbageCollectorMXBean;
import java.lang.management.ManagementFactory;
import java.util.List;
public class Main {
public static void main(String[] args){
List<GarbageCollectorMXBean> list = ManagementFactory.getGarbageCollectorMXBeans();
for(GarbageCollectorMXBean b:list){
System.out.println(b.getName());
}
}
}
此时发现年轻代使用Parallel Scavenge收集器,老年代使用CMS收集器。
修改虚拟机启动时的配置
再次执行代码,发现垃圾收集器已经更改完成