jmap的几个主要的危险操作如下:
1. jmap -dump
这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用。
2. jmap -permstat
这个命令执行,JVM会去统计perm区的状况,这整个过程也会比较的耗时,并且同样也会暂停应用。
3. jmap -histo:live
这个命令执行,JVM会先触发gc,然后再统计信息。
上面的这三个操作都将对应用的执行产生影响,所以建议如果不是很有必要的话,不要去执行。
gcore
另外,在排查问题的时候,对于保留现场信息的操作,可以用gcore [pid]直接保留,这个的执行速度会比jmap -dump快不少,之后可以再用jmap/jstack等从core dump文件里提取相应的信息,不过这个操作建议大家先测试下,貌似在有些jdk版本上不work。
-Dfile.encoding
对于Java应用,还是在启动参数上指定下-Dfile.encoding比较安全一点,避免这种默认的转码依赖系统的配置,很容易踩进坑里。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。