读书笔记
清色回忆
test
展开
-
Java内存区域和内存溢出——《深入理解Java虚拟机》第二章
内存区域由所有线程共享的数据区域:Java堆、方法区线程隔离的数据区域:Java虚拟机栈、本地方法栈、程序计数器程序计数器1、程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。2、字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。3、它是程序控制流的指示器,如分支、循环、跳转、线程恢复都是依赖该计数器来完成的。4、该区域是线程私有的。5、如果线程执行的是一个Java方法,那么计数器记录的就是正在执行的虚拟机字节码地址。6、如果原创 2020-11-12 11:07:33 · 87 阅读 · 0 评论 -
排查OOM的简单思路
1、首先通过内存映像分析工具对Dump出来的堆转储快照进行分析,确认内存中导致OOM的对象是否是必要的,还需要分清楚是出现了内存泄露还是内存溢出。2、如果是内存泄露,可进一步通过工具查看泄露对象到GC roots的引用链,找到泄露对象是通过怎样的引用路径、与哪些GC roots相关联,才导致垃圾收集器无法回收他们,根据泄露对象的类型信息以及它到GC roots引用链的信息,一般可以比较准确的定位到这些对象创建的位置,进而找出产生泄露的代码的具体位置。3、如果不是内存泄露,则说明内存中的兑现是必须存活的.原创 2020-11-12 10:30:02 · 5750 阅读 · 0 评论