JVM调优-------(二)----类加载机制和jdk调优命令

类加载器的种类 

启动类加载器(Bootstrap ClassLoader) 负责加载JRE的核心类库,如JRE目标下的rt.jar,charsets.jar等

扩展类加载器(Extension ClassLoader) 负责加载JRE扩展目录ext中jar类包

系统类加载器(Application ClassLoader) 负责加载ClassPath路径下的类包

用户自定义加载器(User ClassLoader) 负责加载用户自定义路径下的类包

 

类加载机制 

全盘负责委托机制 
当一个ClassLoader加载一个类的时候,除非显示的使用另一个ClassLoader,该类所依赖和引用的类也由这个 ClassLoader载入 双亲委派机制 
指先委托父类加载器寻找目标类,在找不到的情况下载自己的路径中查找并载入目标类
双亲委派模式的优势 
沙箱安全机制:比如自己写的String.class类不会被加载,这样可以防止核心库被随意篡改 避免类的重复加载:当父ClassLoader已经加载了该类的时候,就不需要子CJlassLoader再加载一次 

JDBC连接打破了双亲委派机制。。。

 

当不让用可视化工具就要使用这些命令了,,,,,

 

常见jvm命令

jps:查看运行的java进程

jps -vl;详细信息

Jstat 
jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令格式: 

jstat -class 进程  :类加载统计 

jstat -gc 进程:垃圾回收统计

             s:survivor区       c:代表总空间大小     u:usered      e:Eden伊甸园      o:order 老年代

MC:元空间的总空间 MU:元空间的使用空间 CCSC:压缩类的总空间 CCSU:压缩类的使用空间 YGC:年轻代垃圾回收次数 YGCT:年轻代垃圾回收消耗时间 FGC:老年代垃圾回收次数 FGCT:老年代垃圾回收消耗时间 GCT:垃圾回收消耗总时间 

jstat -capacity 进程:堆内存统计

 

Jmap 
可以用来查看内存信息

jmap -histo 7824 > xxx.txt   :堆的对象统计(包括回收的和活的)    jmap -histo:live 7824 > xxx.txt 
Num:序号      Instances:实例数量         Bytes:占用空间大小         Class Name:类名 堆信息 

 

堆内存dump ,查看hprof文件

可以使用jvisualvm命令工具导入文件分析(jdk自带工具)

 

当内存溢出时查看hprof文件,通过JVisualVM查看类,类的数量---------->用这个软件实时查看堆信息------>OOM

Jstack 

jstack用于生成java虚拟机当前时刻的线程快照

jstack 15215 > deadLock.txt

prio:进程优先级     os_prio:操作系统优先级        tid:jvm中内存地址         nid:cpu中的线程

用于查看栈信息-------------->线程快照------------->死锁,死循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值