JVM 标签

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

  |   0 评论   |   1,527 浏览

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

Linux x86 程序启动-怎么执行到main方法 - Linux x86 Program Start Up or-How the heck do we get to main [翻译][注解版] 有更新!

  |   0 评论   |   1,763 浏览

译文

原标题: Linux x86 Program Start Up or - How the heck do we get to main()? by Patrick Horgan

摘要:

整篇文章大意就是要给我们介绍在main函数执行前要做什么.或者说main方法整体在程序的运行流程中.处于哪一个环节.
然后主体的串流程是在函数: __libc_start_main 因为这个是gcc, 编译的有可能是cpp文件. 另外即使是c语言.
也有可能的一些全局的 construct函数和 deconstruct 函数.
你也可以在知乎阅读此文: https://zhuanlan.zhihu.com/p/521205296

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

  |   0 评论   |   1,729 浏览

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

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