JVM学习之路04--(常用JVM参数,内存分析)

JVM学习之路04--(常用JVM参数,内存分析),第1张

JVM学习之路04--(常用JVM参数内存分析)

目录

1.基于JDK命令行工具的监控

 2.运行时JVM参数查看

 3. jstat查看JVM统计信息

 4. jamp+MAT(导出内存映像文件,MAT分析内存溢出)


1.基于JDK命令行工具的监控

 1.1JVM的参数类型

  1.1.1标准参数(相对来说比较稳定的参数)

    

   1.1.2 X参数(有可能会变)

    

   1.1.3 XX参数 用得最多最重要 主要分为两类

       bool类型 表示启用或者禁用,例如:

      

      非bool类型,K,V的形式,比如:

      

      注意:-Xms 和-Xmx也是XX类型参数

      

 更多命令访问:https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr.html#diagnostic_tools

 2.运行时JVM参数查看

    查看正在运行的java进程:jps

     

     加上-l参数显示应用程序主类的完整包名或应用程序JAR文件的完整路径名:

     

    jinfo命令查看运行时JVM的参数: 

     查看运行的jvm被我们手动赋过值的参数:jinfo -flags <进程号>

    查看运行的jvm指定的参数:jinfo -flag MaxHeapSize <进程号>

 

 3. jstat查看JVM统计信息

 

  

  查看类装载的信息:jstat -class <进程号>

  

 类装入器统计信息。

Loaded:已加载的类数。

Bytes:加载的KB数。

Unloaded:已卸载的类数。

字节:卸载的KB数。

时间:执行类加载和卸载 *** 作所花费的时间。

  查看垃圾回收:jstat -gc <进程号>  <每隔多少毫秒> <输出多少次> 

 

   JVM内存结构:

 4. jamp+MAT(导出内存映像文件,MAT分析内存溢出)

   堆区内存溢出:堆内存溢出前文有演示,这里不再赘述。

   非堆区内存溢出:非堆指的是方法区,也叫永久区,存的是类信息(class),常量,静态变量,即时编译器编译后的代码等数据。

-XX:metaspaceSize=320M -XX:MaxmetaspaceSize=320M

 导出内存印象文件:

 第一种内存溢出自动导出前文介绍过,这里就看第二种  使用jmap命令手动导出

jmap -dump:format=b,file=noheap.hprof 21408

 

 导入分析工具:

 

  内存中有一千个我们的类:

 看他的强引用:

 

 然后就开始排查代码 为什么这个list没有被释放。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5707027.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存