最主要的危险操作是下面这三种:
1. jmap -dump
这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用。
2. jmap -permstat
这个命令执行,JVM会去统计perm区的状况,这整个过程也会比较的耗时,并且同样也会暂停应用。
3. jmap -histo:live
这个命令执行,JVM会先触发gc,然后再统计信息。
上面的这三个操作都将对应用的执行产生影响,所以建议如果不是很有必要的话,不要去执行。
几个配置说明
配置 | 说明 |
---|---|
-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(慎用)
指令2:jstat -gcutil h3 pid 2000 20
h3,每三行显示一次标题
2000 每2000ms显示一次
20 显示20次
指令3:jmap -histo pid