jvm OOM 排查

       最近公司的测试环境的Cassandra OOM了,借此机会顺便也回顾一下之前学习的JVM,在这总结一下。本文所指JVM是针对Sun的官方HotSpot VM。

 

首先了解一些基本JVM知识。

1、JVM主要内存结构

     a、堆(heap)

          堆主要分为新生代、老年代、永久代

          新生代:存储java实例对象即数组,即:通过 new 生成的对象首先放入此区域,特殊情况也直接放入老年代

          老年代:通过若干次YGC(新生代进行垃圾回收)以后,仍然活下来的对象会被放入此区域

          永久代:Class的Meta信息以及运行期的常量池

     b、栈(stack)

           主要存放对象的引用以及局部变量等

2、java提供的jvm查看命令

     在jdk的bin目录下面好多Java提供的命令可以直接使用,jvm相关的如下:

     1、jps,类似于linux或unix的ps -ef,用于获取当前JVM的实例进程相关的信息,包括进程号,启动类全名,main方法参数、实例的设置的jvm参数等。

          默认是只列出进程号,启动类SimpleName(就是不含包名)

          可带参数如下:

          -l 列出启动类全名,就是main方法所在的类全名

          -m 列出main方法的参数

          -v  列出启动的设置jvm参数

     2、jmap,用于查看当前堆使用情况

          使用示例:jmap 参数 jvm实例进程号

          常用参数如下:

          -heap 列出当前堆使用情况

          -permstat 列出永久代统计情况,里面包含一个重要的统计,就是当前常量池,包含多少个String,并占多大内存

          -help,列出帮助,显示其他可选的参数

     3、jstat,列出当前GC相关

          使用参数 -help获取更多官方信息

3、jvm的图形化工具排查

     jconsole,visualVM,MemoryAnalyzerTool等

 

待续。。。先下班

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值