JVM
乔布斯基
请叫我乔布斯基
展开
-
深入理解Java虚拟机-Eclipse Memory Analyzer 安装使用说明
Eclipse Memory Analyzer(简称MAT)是一个功能丰富且操作简单的JVM Heap Dump分析工具,可以用来辅助发现内存泄漏减少内存占用。使用 Memory Analyzer 来分析生产环境的 Java 堆转储文件,可以从数以百万计的对象中快速计算出对象的 Retained Size,查看是谁在阻止垃圾回收,并自动生成一个 Leak Suspect(内存泄露可疑点)报表。...原创 2018-11-03 10:59:14 · 1557 阅读 · 0 评论 -
深入理解Java虚拟机-OOM分析
OOM即Out Of Memory Error,内存溢出。如果不断的创建对象,并且这些对象到GC Roots之间有可达路径,那么这些对象就不会被垃圾回收机制清楚,当对象数量达到容量限制是就会产生内存溢出。在虚拟机中,只有程序计数器不会产生OOM,除此之外其他几个运行时区域都有可能发生OOM。下面通过一段代码模拟内存溢出:public class OOMObject { priv...原创 2018-11-03 21:51:42 · 678 阅读 · 0 评论 -
深入理解Java虚拟机-Java内存区域、对象创建及访问
1,运行时数据区域包括:方法区,虚拟机栈,本地方法栈,堆,程序计数器,如下图1图1,Java虚拟机运行时数据区 1.1,程序计数器(Program Counter Register),是一块较小的内存空间,可以看做是当前线程所执行字节码的行号表示器。唯一不会抛出OOM异常的区域。 1.2,Java虚拟机栈(Java Virtual Machine Stacks),线程私...原创 2018-11-04 22:55:41 · 250 阅读 · 0 评论 -
深入理解Java虚拟机-JDK自带工具集
1,JPS:JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程 1.1,jps -q:只输出LVMID(Local Virtual Machine Identifier本地虚拟机唯一ID),省略主类的名称 1.2,jps -m:输出虚拟机进程启动时传入给主类mian()函数的参数 1.3,jps -l:输出主类的全民,如果进...原创 2018-11-20 21:50:30 · 449 阅读 · 0 评论 -
深入理解Java虚拟机-垃圾收集算法及收集器
1,如何判断对象是否还在被引用? a,引用计数算法:给对象添加一个引用计数器,当对象被引用时,计数器+1,当引用失效时,计数器-1,计数器为0时,表示对象已经不再被使用。引用计数法会因为循环引用导致对象无法被回收。 b,可达性分析算法:通过一系列的“GC Roots”作为起始点,从这些点开始向下搜索,搜索所有走过的路称为引用链。当一个对象到GC Roots不可达时,表示该对象不...原创 2018-11-16 21:30:57 · 145 阅读 · 0 评论 -
深入理解Java虚拟机-一张图了解Class文件结构
Class文件是Java虚拟机执行引擎的数据入口,也是Java技术体系的基础构成之一,老衲废寝忘食总结Class文件结构要件,希望各位施主能够了解一二,奉上知识图谱一份。...原创 2018-12-07 22:48:03 · 204 阅读 · 0 评论 -
深入理解Java虚拟机-类加载与双亲委派
类加载过程1,类生命周期分为加载,验证,准备,解析,初始化,使用和卸载,其中验证,准备和解析阶段和称为连接。2,加载:通过一个类的全限定名来获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构,在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。数组本身不通过类加载器创建,它有虚拟机直接创建。3,...原创 2018-12-15 20:16:31 · 320 阅读 · 0 评论