做有温度的教育!
全国统一咨询热线:400-803-9399
北京
校区
新闻资讯> 技术分享> JVM的垃圾回收任务及原理

JVM的垃圾回收任务及原理

时间:2018-11-08
浏览:4726
发布:甲骨文华育兴业
赞:1426

  了解了JVM在Java堆和非堆中进行的内存划分,了解了各个区域下划分的子区域及对应的存储数据。现在就可以介绍JVM是如何执行内存回收的:

甲骨文华育兴业

  对象实例的内存分配主要在Young Generation->Eden当中,该区域是一块连续的空闲的内存区域。因此在该区域进行内存的分配非常快速,因为不需要进行可用内存区域的查找。而在Young Generation->From Survivor和To Generation中,这两个存活区始终有一个是空的,那么在进行垃圾回收时,JVM通过算法查找出Eden当中不活跃的对象实例,然后将活跃的对象实例复制到其中的一个空白的存活区中,而另一个存活去存储了上一次垃圾回收时存储的对象实例,对该区域进行搜索将活跃的对象也复制到那个空白的存活去中,这样,其中的存活区就存储了活跃对象实例,接下来把剩下的两个区域Eden和其中一个Survivor置空即可。如此一来,Eden又空了,就又可以进行内存开辟了,另一个存活区清空了,可以为下次垃圾回收提供活跃对象的存储场所。

甲骨文华育兴业

  在这个过程中有一个问题,随着垃圾回收的不断执行,存活区内的对象实例越来越多,那么该怎么办呢?Java垃圾回收机制会对该存活区内的对象进行算法统计,将存活时间偏长的对象复制到Old Generation当中,用来释放存活区的存储空间。

  以上就是几个存储区域的作用。

  上面描述的是Young Generation当中的内存回收机制,那么对于Old Generation和Permannent Generation中的对象,该如何进行内存回收呢?采用的回收算法是另一种:

  称之为“标记->清除->压缩”。

  标记值得是标记活跃的对象,清除是回收存活过久的对象,压缩是将内存进行压缩,是所有的对象保存在一端,留下另一端空白的内存区域方便开辟新的对象空间。这样一来降低了内存碎片,提高了内存的利用率。


人生从业之路的第一步,从甲骨文华育兴业开始,

背后付出的辛苦与努力只有自己知道,而这也只是职业生涯的开始。

勤恳努力的人终会得到最好的回报,有些努力需要时间来回答

你吃的苦终会铺成你想要的路!

甲骨文华育兴业,为你的IT之路开启梦想之门!


【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息联系我们,我们将及时沟通与处理。本站内容除非来源注明甲骨文华育兴业,否则均为网友转载,涉及言论、版权与本站无关


相关推荐

甲骨文华育兴业

缓存击穿、缓存并发和缓存雪崩

缓存击穿、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题。 缓存击穿通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪崩是由缓存同时失效造成的,三种问题都比较典型,也是难以防范和解决的。

甲骨文华育兴业

大数据挖掘是什么,数据挖掘的方法主要有哪些?

数据挖掘(Data Mining)是从大量的、不完全的、有噪声的、模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

java开发培训

高并发和大流量解决方案

在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任意一个时刻上只有一个程序在处理机上运行。

java开发培训

内存模型是怎么解决缓存一致性问题的?

由于CPU和主存的处理速度上存在一定差别,为了匹配这种差距,提升计算机能力,人们在CPU和主存之间增加了多层高速缓存。每个CPU会有L1、L2甚至L3缓存,在多核计算机中会有多个CPU,那么就会存在多套缓存,那么这多套缓存之间的数据就可能出现不一致的现象。为了解决这个问题,有了内存模型。内存模型定义了共享内存系统中多线程程序读写操作行为的规范。通过这些规则来规范对内存的读写操作,从而保证指令执行的正确性。

大数据中hadoop是什么? ps使用 大数据 冲刺Java架构师年薪50W

友情链接: 甲骨文华育兴业太原校区 甲骨文华育兴业济南校区 甲骨文华育兴业哈尔滨校区 甲骨文华育兴业长春校区 魔据教育 音乐培训 青海律师

Copyright ©2016-2019. All Rights Reserved. 京ICP备17018991号-4

网站地图