运维
Tcpdump抓包工具
tshark抓包工具
Ansible
Ansible配置
Ansible-远程命令模块( command / script / shell )
Ansible-常用模块
PlayBook
PlayBook-变量
PlayBook-条件/循环
PlayBook-Tags
PlayBook-常用脚本
Ansible-Vault(数据安全)
Ansible-API
Ansible实践
JMeter测试软件
JMeter性能指标
Curl
综合分析工具
磁盘/IO工具
网络分析工具
JAVA分析工具
更换硬盘
Linux启动流程
安装问题
GURB加密
修改默认启动项
Root密码忘记
重装内核、GRUB
Too many open files错误
误删文件,内存恢复
Read-only file system错误
本文档使用MrDoc发布
返回首页
-
+
JAVA分析工具
2021年11月28日 12:29
admin
#注意:JVM 堆内存 = 新生代(Eden + 2个Survivor) + 老年代(Old Gen) 堆内存使用到达80%,会触发Full GC(FGC) --- -Xms默认:1/64物理内存 #堆内存最小限制 -Xmx默认:1/4物理内存 #堆内存最大限制 -XX:MetaspaceSize:1/64物理内存 #非堆内存最小限制 -XX:MaxMetaspaceSize:1/4物理内存 #非堆内存最大限制 --- 默认堆内存小于40%时,JVM就会增大堆直到最大堆内存限制, 默认堆内存大于70%时,JVM就会减少堆知道最小堆内存限制。 --- #JVM GC流程 ![](/media//202111/2021-11-28131829472041.png) >####1、当伊甸区(Eden)的空间用完时,程序又需要创建对象,JVM的垃圾回收器就会对伊甸区进行垃圾回收,将伊甸去中的不再被其他对象所引用的对象进行销毁。然后将伊甸区中不能被回收的对象移动到幸存0区。 >####2、若幸存0区也满了,在对该区进行垃圾回收,然后再移动到1区。 >####3、若1区也满了,那么就将对象移动到老年代(养老区)。 --- #JPS >###查看本地运行着的 Java 进程, 及其进程号、进程启动的路径等信息 ##参数说明 -q #只显示pid -l #输出应用程序main class的完整package名或者应用程序的jar文件完整路径名 -v #查看pid及JVM参数 ##示例 jps -v ![](/media//202111/2021-11-28122859890691.png) --- #jmap >###查看垃圾收集策略即 JVM 内存占用情况 jmap -histo [pid] # 按照内存使用大小倒序列出内存中的实例类型. jmap -heap pid # 查看垃圾收集策略, 以及堆内存的分配与使用情况. ![](/media//202111/2021-11-28131829472041.png) ###注意: ####堆内存 = 年轻代 + 年老代 + 永久代 ####年轻代 = Eden区 + 两个Survivor区(From和To) --- ####配置信息与使用情况: ![](/media//202111/2021-11-28131316037983.png) ####-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量. ![](/media//202111/2021-11-28124035760383.png) --- #jstat jstat -gc <pid>: 可以显示gc的信息,查看gc的次数,及时间 ![](/media//202111/2021-11-28132557463808.png) jstat -gcutil <pid>:统计gc信息 ![](/media//202111/2021-11-28132457042538.png) --- #JVM优化 ####示例: - name: JVM_ARGS value: -Xmx1536m -Xms512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/logs/my-heap-dump.hprof -Xloggc:/logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps ####参数说明: # 发生内存溢出自动dump内存文件 -XX:+HeapDumpOnOutOfMemoryError # 指定dump文件地址为服务打印日志文件夹/logs(已挂载) -XX:HeapDumpPath=/logs/my-heap-dump.hprof # 打印服务gc日志 -Xloggc:/logs/gc.log # 输出详细GC日志 -XX:+PrintGCDetails # 格式化输出时间戳 2020-09-17T19:45:05.680+0800 -XX:+PrintGCDateStamps
分享到: