JVM java虚拟机及HotSpot研究

怎样使用jmap查看jvm存活对象: jmap -histo pid & jmap -histo:live pid 有更新!

  |   0 评论   |   1,208 浏览

如果想查看当前堆中的所有对象的top值. 使用如下命令: jmap -histo pid | head -n 50;这个命令会直接打印出堆中"存活"的前50个对象(实际对象可能已经dead,只是一直没有进行fullgc).
如果想只看存活的对象, 那可以使用命令: jmap -histo:live pid | head -n 50;这个命令在打印前会做一次FUllGC然后再打印出真实的存活对象.

OpenJDK8 编译构建基础设施详解(2) - Make流程解析 置顶! 有更新!

  |   0 评论   |   1,946 浏览

OpenJDK8 编译构建基础设施详解 - Make流程解析
在上一篇文章中, 较详细的分析了 OpenJDK 编译过程中的两步的前一步:./configure , 这一篇主要来分析下make流程. make流程主要涉及的是OpenJDK 的makefile的结构, 以及make命令的工作流程.
您也可以在知乎阅读此文: 知乎专栏-跟我一起阅读OpenJDK源

内存泄露案例1: Eclipse MAT&IBM HeapAnalyzer-由于错使用循环变量导致WHILE死循环的OOM 有更新!

  |   0 评论   |   1,458 浏览

本文介绍了一次测试环境的开发过程的OOM问题排查,期间使用到了内存dump分析工具: Eclipse MAT和IBM HeapAnalyzer 两种分析工具.
最终结合代码找到了具体问题代码. 此文章会涉及到dump内存的基本分析. 以及分析内存泄漏的过程.

在分析完并定位到内存泄露后,定位到代码. 反过来再复盘之前的过程. 实际上也可以不用使用内存Dump这个终极工具. 也可以比较方便的
定位内存泄露的地方. 更多的可能是需要更详细的分析代码.(也就是要对源代码更熟悉一些)