JVM深入讲解
JVM深入讲解
先给自己打个气
这个作者很懒,什么都没留下…
展开
-
虚拟机类加载机制
虚拟机类加载机制 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 1、类加载的生命周期 加载->验证->准备->解析->初始化->使用->卸载 七个阶段,验证、准备、解析三个部分叫做连接。 加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程回按照这种顺序去开始,而解析阶段不一定:它在某些情况下可以在初始化阶段之后在开始,这是为了支持Java的运原创 2020-12-24 15:18:56 · 164 阅读 · 0 评论 -
垃圾收集器与内存分配策略
1、判断对象是否死亡 垃圾收集器在对堆进行回收前,第一件事就是确定这些对象之间哪些还“存活”着。 1.1引用计数法 给对象添加一个引用计时器,每当有一个地方引用它,计数器就加1;当引用失效时,计数器就减1,任何时刻计数器为0的对象就是不可能在被使用的。 但是主流的虚拟机都没有选用这种方法来管理内存,因为他不能解决对象之间循环引用引起的问题。 例:对象objA和对象objB都有字段instance,赋指令objA.instance = objB 以及objB.instance = objA,在之后把这两个对象原创 2020-12-21 11:43:22 · 188 阅读 · 0 评论 -
Java内存区域划分
Java内存区域 简介: Java的虚拟机有自动内存管理的机制,不需要为每个new的操作写配对的delete/free代码,不容易出行内存泄漏和内存溢出问题,由虚拟机自动管理。但是一旦出现了内存泄漏和溢出,如果不了解虚拟机是怎么使用内存的,排查错误也很困难。 1、运行时数据区域 1、程序计数器 程序计数器是一块较小的内存空间,它可以看作时当前线程所执行的字节码的行号指示器。 Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核处理器来说是一原创 2020-12-17 09:27:19 · 233 阅读 · 0 评论