![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 80
Touch me heart
努力,是为了遇见更好的自己
展开
-
JVM(六):GC算法之标记-清除算法,标记复制算法,标记整理算法,分代收集算法
上一章节中,我们知道了如何去判断对象是否还存活。那么当我们知道了那些不再存活的对象时,就需要及时的把这些对象清除掉,这也就是在JVM中重要的操作---GC(garbage collection) 内存回收操作。这章节中我们主要是要去知道关于一些GC操作的算法。在了解这些算法之前呢,需要大致的对堆中的分代简单了解一下。在堆中,存在新生代跟老年代这么2块内存空间。一般而言:新生代所占用的内存...原创 2020-03-24 11:18:41 · 594 阅读 · 0 评论 -
JVM(五):怎么去判断对象是否还活着?
上章讲到了如何去访问堆中的对象,现在我们来看看关于对象是否还活着的判断方式,同样的要判断一个对象是否还活着也会有两种方式,往下看:1.引用计数法顾名思义引用计数,引用计数就是当我们的对象被引用是时候对应的计数器就会+1,当引用被释放后对应的计数器就会-1.当计数器等于0的时候,就意味着这个对象没有被引用了,也就是说这个可以被gc进行回收,不再存活。优缺点:首先这种判断对象存活的...原创 2020-03-21 16:44:14 · 744 阅读 · 0 评论 -
JVM(四):对象是如何被访问的?
上篇文章中我们讲到了 对象是如何被创建的以及在堆中的空间是如何被分配的,这章呢?咱们来说说这个堆中的对象是怎么被访问的。其实要想去访问对象有以下两种方式:1.直接指针访问在虚拟机栈中呢,会有一个叫做局部变量表的东东,这里边呢有个reference的引用类型存储了指向了堆中的一个地址(对象在堆中的地址),堆中的这个地址呢会有2种类型的数据,分别是实例数据跟类型数据,实例数据直...原创 2020-03-21 14:59:24 · 161 阅读 · 0 评论 -
JVM(三):对象的创建过程是怎样的?
对象的创建过程中一般会包括以下几个步骤:1):当虚拟机接收到一条new创建对象指令时,会先检查以下在常量池中是否能够找到这个对象的符号引用。2):判断这个类是否被虚拟机加载,解析和初始化。3):在堆中为这个对象分配空间,分配空间的方式有以下2种: a.指针碰撞: 包含开辟空间跟移动指针2个步骤 b.空闲列表:包含开辟空间跟修改空闲列表2 个步骤 以上2中分配空间...原创 2020-03-21 10:56:47 · 143 阅读 · 0 评论