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没有被释放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时空恋旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值