最主要的危险操做是下面这三种:
1. jmap -dump
这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap若是比较大的话,就会致使这个过程比较耗时,而且执行的过程当中为了保证dump的信息是可靠的,因此会暂停应用。spa
2. jmap -permstat
这个命令执行,JVM会去统计perm区的情况,这整个过程也会比较的耗时,而且一样也会暂停应用。线程
3. jmap -histo:live
这个命令执行,JVM会先触发gc,而后再统计信息。内存
上面的这三个操做都将对应用的执行产生影响,因此建议若是不是颇有必要的话,不要去执行。ci
几个配置说明io
配置 | 说明 |
---|---|
-Xms1024m | 初始堆大小为1024M |
-Xmx1024m | 最大堆大小为1024M |
-Xmn256m | 年轻代大小为256M |
-XX:NewSIze=256m | 新生代初始内存的大小 |
-XX:MaxNewSize=256m | 年轻代最大值 |
-XX:PermSize=256m | 持久代初始值 |
-XX:MaxPermSize=256m | 持久代最大值 |
-Xss | 每一个线程的堆栈大小 |
-XX:NewRatio=4 | 年老代与年轻代的比值为4:1 |
-XX:SurvivorRatio=8 | 一个Survivor区占整个Young Gen 的1/10 |
指令1:jstack -l pid >/xxxx.txt(慎用)table
指令2:jstat -gcutil h3 pid 2000 20 配置
h3,每三行显示一次标题map
2000 每2000ms显示一次gc
20 显示20次统计
指令3:jmap -histo pid