jvm运维操作

夏侯兰
• 阅读 1229

// https://www.jianshu.com/p/1e6...
// https://blog.csdn.net/weixin_...
// https://cloud.tencent.com/dev...
-XX:NativeMemoryTracking=summary

jcmd pid VM.native_memory

类的追踪:
添加jvm参数: -verbose:class

堆内存追踪:
1:dump出来文件,使用jvisualvm.exe或者其他工具查看文件。jvm命令:jmap -dump:format=b,file=outfile {pid}
2:jmap -histo:live {pid} (会触发fullgc)/ jmap -histo {pid} 查看内存对象的分布
3:jmap -heap {pid}
元空间类加载情况追踪:

1:jstat -class {pid}
2:jmap -clstats {p
元空间内存使用情况追踪:

1:添加jvm参数-XX:NativeMemoryTracking=summary

jcmd {pid} VM.native_memory

整个memory主要包含了Java Heap、Class、Thread、Code、GC、Compiler、Internal、Other、Symbol、Native Memory Tracking、Arena Chunk这几部分;其中reserved表示应用可用的内存大小,committed表示应用正在使用的内存大小
Java Heap部分表示heap内存目前占用了多少MB;Class部分表示已经加载的classes多少个,其metadata占用了多少MB;Thread部分表示目前有多少个线程,占用了多少MB;Code部分表示JIT生成的或者缓存的instructions占用了多少MB;GC部分表示目前已经占用了多少MB的内存空间用于帮助GC;Code部分表示compiler生成code的时候占用了多少MB;Internal部分表示命令行解析、JVMTI等占用了多少MB;Other部分表示尚未归类的占用了多少MB;Symbol部分表示诸如string table及constant pool等symbol占用了多少MB;Native Memory Tracking部分表示该功能自身占用了多少MB;Arena Chunk部分表示arena chunk占用了多少MB
gc追踪:

jstat -gc {pid}
cpu耗时/线程信息追踪:

1:使用查看jmc.exe
添加jvm参数:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository={filePath},maxage=6m,settings=default
2:top -H -p {pid} 获取进程的线程资源占用信息 (无需重启)
jstack pid >> xx.txt 获取进程的线程信息
java -jar jcaxx.jar。在软件里打开a,就可以看到线程栈的情况(https://www.ibm.com/support/p... 可以下载 开源工具)
// https://blog.csdn.net/wuyuxin...
堆外内存追踪

1:cat /proc/{pid}/smaps
Size:表示该映射区域在虚拟内存空间中的大小。
Rss:表示该映射区域当前在物理内存中占用了多少空间      
Shared_Clean:和其他进程共享的未被改写的page的大小
Shared_Dirty: 和其他进程共享的被改写的page的大小
Private_Clean:未被改写的私有页面的大小。
Private_Dirty: 已被改写的私有页面的大小。
Swap:表示非mmap内存(也叫anonymous memory,比如malloc动态分配出来的内存)由于物理内存不足被swap到交换空间的大小。
Pss:该虚拟内存区域平摊计算后使用的物理内存大小(有些内存会和其他进程共享,例如mmap进来的)。比如该区域所映射的物理内存部分同时也被另一个进程映射了,且该部分物理内存的大小为1000KB,那么该进程分摊其中一半的内存,即Pss=500KB。
2 pmap -x {pid}
Address: start address of map 映像起始地址
Kbytes: size of map in kilobytes 映像大小     
RSS: resident set size in kilobytes 驻留集大小
Dirty: dirty pages (both shared and private) in kilobytes 脏页大小
Mode: permissions on map 映像权限: r=read, w=write, x=execute, s=shared, p=private (copy on write)
Private_Dirty: 已被改写的私有页面的大小。
3:google-perftools 它的原理是在java应用程序运行时,当调用malloc时换用它的libtcmalloc.so,这样就能做一些统计了它的原理是在java应用程序运行时,当调用malloc时换用它的libtcmalloc.so,这样就能做一些统计了。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Stella981 Stella981
3年前
Flink SQL高效Top
!(https://oscimg.oschina.net/oscnet/46b8a0ceb9054056a7f9887f580e6427.png)https://www.jianshu.com/p/dea467eb67e0TopNTopN是我们应用Flink进行业务开发时的常见场景,传统的DataS
Stella981 Stella981
3年前
Navicat Premium 12.0.18安装与激活
转载自:https://www.jianshu.com/p/42a33b0dda9c(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.jianshu.com%2Fp%2F42a33b0dda9c)
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Stella981 Stella981
3年前
Neo4j删除节点和关系、彻底删除节点标签名
<divclass"htmledit\_views"id"content\_views"<p<ahref"https://www.jianshu.com/p/59bd829de0de"rel"nofollow"datatoken"720f42e8792665773f66044d30a60222"https://www.jians