![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
卓尔货币
这个作者很懒,什么都没留下…
展开
-
Java虚拟机学习(3)—对象存活判定算法和垃圾收集算法
存活下来的物种,并不是最强的和最聪明的,而是最能适应变化的。—— 达尔文 《未知》一、对象存活判定算法垃圾收集器在对堆进行回收前,第一件事就是确定哪些对象还“活着”,哪些已经“死了”。1、引用计数算法引用计数算法是一个简单且高效的对象存活判定算法:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器数值就加一,当引用失效时,计数器数值就减一。当计数器数值为0时,代表该对象不会再被引用。尽管这个算法非常通俗易懂,但是并没有什么主流Java虚拟机采用这个算法,主要是因为这个算法会遇到很多特殊.原创 2020-11-30 15:31:19 · 204 阅读 · 0 评论 -
Java虚拟机学习(2)—对象的创建、布局、访问
创造的神秘,有如夜间的黑暗,是伟大的。而知识的幻影,不过如晨间之物。 ——泰戈尔在了解了虚拟机内存区域划分之后,我们就可以更进一步探究Java对象是如何在内存上创建、存放并访问的了。1、对象的创建当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数能否在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析、初始化过。如果没有,则首先进行类加载。当类加载完成后,新生对象所需的内存就已经可以确定了。所以为新生对象分配空间就是从堆空间中划分一块大小确定的内.原创 2020-11-30 15:30:35 · 82 阅读 · 0 评论 -
Java虚拟机学习(1)—Java内存区域划分
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。一说到Java的内存区域,经常有人笼统地划分为堆内存和栈内存,堆存放对象,栈存放局部变量和方法。其实事实上Java的内存区域划分要比这复杂。不同的区域各自用途不同,创建、销毁、收集的时间和方法也各不相同。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存包括以下几个数据区域:1. 程序计数器程序计数器是每个线程所独有的一块较小的内存区域,用来作为当前执行的字节码的行号指示器(概念.原创 2020-10-09 16:58:20 · 112 阅读 · 0 评论