JVM分析工具以及JVM常用调优参数

Bertha 。 2022-05-12 02:26 364阅读 0赞

#查看java中的所有线程
top -H -p pid[进程号]
pidstat -p pid -u -t[线程级]
#查看启动java进程
jps
#查看Java内存信息 jmap
jmap -heap pid ===>查看Java进程的堆分配信息
jmap -histo pid ===>导出堆信息
jmap -dump:live,file=dumpfile pid ===>导出堆信息
jhat dumpfile ===>可以与上面jmap -dump导出的堆文件 通过网址查看堆信息

#查看java栈信息 jstack
jstack -l pid > jstack.log 可以打印出栈信息 pid是Java进程
jstack.log 分析===》需要找出Java进程中CPU使用频率较高的线程 在把线程的pid转换成16进制 在日志找出对应的栈信息 就可以找到对应的类使用情况 在修改代码

#实时监控Java进程的堆使用情况
jstat -gcutil pid[进程号] 3s[几秒输出一次] 堆使用情况统计
jstat -class pid 类加载统计
jstat -compiler pid 编译统计

#=====================================jvm参数设置================================
JAVA_OPTS=”-server -Xms1280m -Xmx1280m -XX:PermSize=128M -XX:MaxNewSize=512m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/mnt/sda6/heapdump/tomcat_test “

-server 使用service版的jdk 性能比client版的jdk好
-Xms 堆初始化大小 默认是 系统内存的1/64 Xms 和 Xmx最好配置一样
-Xmx 堆最大内存 默认是 系统内存的1/4
-Xmn 年轻代堆大小 Eden+From+To
-XX:NewSize 年轻代大小
-XX:MaxNewSize 年轻代最大值
-XX:PermSize 持久带初始值 jdk1.7 1.8===>-XX:MaxMetaspaceSize 元数据区 直接使用堆外内存
-XX:MaxPermSize 持久带最大值 jdk1.7
-Xss 每个线程的堆栈大小 jdk1.5之后默认是1M 可以根据程序自身的情况进行优化
-XX:NewRatio 年轻代与老年代的比例 例如4 就是1:4的比例进行分配
-XX:SurvivorRatio survivor与Eden的比例 例如8 就是 2:8的比例进行分配
-XX:MaxTenuringThreshold 年轻代GC几次后进入老年代 需要配置改参数 为0的话Eden gc完要是对象存活下来 就直接进入老年代
-XX:MaxDirectMemorySize 最大直接内存(堆外内存) 默认值跟-Xmx值一样

发表评论

表情:
评论列表 (有 0 条评论,364人围观)

还没有评论,来说两句吧...

相关阅读

    相关 [JVM] 参数

    > 随着Java应用程序的不断发展和优化,JVM调优已经变得越来越重要。在这篇文章中,我们将探讨一些常用的JVM调优参数,了解如何更好地优化Java应用程序的性能。 ----