jvm调优工具使用
java -XX:+PrintFlagsInitial 查看本机初始值 java -XX:+PrintFlagsFinal
jinfo -flags
必须要会的JVM性能监测工具(JVisualVM)
https://zhuanlan.zhihu.com/p/339676111
https://www.cnblogs.com/baby123/p/11551626.html
要使用 VisualGC 必须在远程机上启动jstatd代理程序,否则会显示 “not supported for this jvm” 错误
jstatd
Could not create remote object
access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)
at java.security.AccessController.checkPermission(AccessController.java:559)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.System.setProperty(System.java:783)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)
这是与安全权限相关的问题。
粗暴的解决办法:
在jdk的\JRE\LIB\SECURITY下把java.policy文件的
grant{
......
};
的最后加入
permission java.security.AllPermission;
JVM在遇到OOM(OutOfMemoryError)时生成Dump文件
方法一:
命令:jmap -dump:(live,)format=b,file=heap.bin
file:保存路径及文件名
pid:进程编号(windows通过任务管理器查看,linux通过ps aux查看,jsp查看java进程)
live: 导出前进行full gc只保留存活的对象
dump文件可以通过MemoryAnalyzer(MAT)分析查看,可以查看dump时对象数量,内存占用,线程情况等。
方法二:让JVM在遇到OOM(OutOfMemoryError)时生成Dump文件
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/heap/dump
利用Arthas进行简单的故障注入
https://blog.csdn.net/xiao__jia__jia/article/details/114944434