一、OOM常用命令
jps:JVM Process Status 查看所有JVM进程状态
jstat:JVM statistics monnitoring 查看jvm各方面的运行数据 可以看堆的容量和已使用空间
jinfo:configuration info 查看jvm的配置参数
jmap: JVM memory map 生产jvm的内存转储快照、生产heapdump文件 查询finalize执行队列
输出堆空间的对象信息,
jhat:heap analysis tool 堆分析工具
jstack:jvm中线程快照
使用jps和 jstat -gcutil 156 1000 10 命令查看 刚重启后与即将OOM的机器GC情况
内存占用较低,刚重启后机器 Eden 区 30% survivor 区无 老年代42%
内存占用较高,即将OOM机器 Eden 区 已满 survivor 68% 老年代67%
造成OOM原因可能有两种
1.访问量增大,创建对象频率加快,GC来不及回收,造成OOM
2.内存泄漏,无用对象还存在引用,GC无法回收
第一种会突然变多,第二种是缓慢增加的,
dump OOM前堆快照,查看当前存在哪些大对象(实例数量最多,占用内存空间比例最大的),找到大对象引用
看下应该是哪个对象没有回收。