![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java虚拟机
笨鸟灬
笨鸟先飞者,为才
展开
-
Java 内存区域-运行时数据区域
最近在学习JVM 的相关知识。一开始看的比较快,对JVM 运行时数据区域只有一个模糊的概念,不太清楚不同内存区域里面到底存放了那些数据,所以在此记录。 我们都知道Java 与C、C++ 最大的区别就是内存管理领域(Java 有内存动态分配和垃圾收集技术)。在《深入理解Java虚拟机》中描述C、C++ 对内存的管理:对于从事C、C++ 的程序开发人员来说,在内存管理区域,他们即是拥有最高权...原创 2018-08-19 20:46:08 · 2407 阅读 · 0 评论 -
一个Java 象的创建过程
在前面我们已经了解过JVM 的内存划分,我们知道一个Java 对象(文中讨论的限于普通Java 对象)在Java 堆上进行分配,下面我们就以HotSpot 虚拟机为例聊聊一个Java 象的创建。对象的创建过程当虚拟机遇到一个new 指令时,会经过以下几个步骤:1. 判断是否加载类首先JVM 会去检查这个指令的参数能否在方法区的常量池中定位到一个类的符号引用,并且检查这个符号引用...原创 2018-08-23 15:38:45 · 122 阅读 · 0 评论 -
垃圾回收——对象已死?
在了解了JVM 的内存区域分布后,我们知道几乎所有的实例对象都在堆上存放,垃圾收集器在对堆进行垃圾回收之前,第一件事就是判断哪些对象是“存活”,哪些已经“死去”(即不可能再被任何途径使用的对象)。那么JVM 该如何判断呢?一、 谈谈引用 在回收“死亡”对象之前,我们需要对对象的“死亡”下一个定义——当一个对象不存在任何引用的时候,称为死亡。所以在介绍接下来来的内容之前我们需要谈谈引用...原创 2018-09-04 21:13:34 · 183 阅读 · 0 评论 -
Java 对象的内存布局
Mark Word 用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分代年龄、锁状态标志、线程持有的锁、偏向线程ID 、偏向时间戳等。这部分数据的长度在32 位和64 位的虚拟机中分别为32 bit 和64 bit 。原创 2018-11-09 13:38:32 · 146 阅读 · 0 评论