- 0
- 0
- 约5.79千字
- 约 8页
- 2019-11-26 发布于广东
- 举报
深入浅出Java垃圾回收机制
对于Java开发人员來说,了解垃圾回收机制(GC)冇哪些好处呢?首先可以满足作为一名软件工 程师的求知欲,其次,深入了解GC如何工作可以帮你写出更好的Java应用。
这仅仅代表我个人的意见,但我坚信一个精通GC的人往往是一个好的Java开发者。如果你对GC 的处理过程感兴趣,说明你已经具备较大规模应川的开发经验。如果你怦经想过如何」E确的选择GC算法, 那意味着你己经完全理解你所开发的应用的特点。当然,我们不能以偏概全,这不能作为评价一个好的 开发人员的共通标准。但是,我要说的是,深入理解GC是成为一名伟大的程序员的必经Z路。
这是成为JavaGC专家系列文章的第一篇,木篇主要针对GC机制进行介绍,在下一篇中,我们将亟 点探讨分析GC状态以及来自NHN的GC调优的例子。
本文的目的是以一种简单的方式向你介绍GC机制。我希望这些文章能够帮到你。实际上,我的学 生已经在Twitter ±发布了一些很好的关于Java内核的文章,并且大受欢迎。冇兴趣的话,你也可以关 注他们。
回到正题,咱们继续谈垃圾回收,在学习GCZ前,你首先应该记住一个单词:“stop-the-wo:rld”。 Stop-the-world会在任何一种GC算法中发牛。Stop-the-worl d ;味着JVM因为耍执行GC而停止了应 用程序的执行。当Stop-the-world发生时,除了 GC所需的线程以外,所有线程都处于等待状态,直到 GC任务完成。GC优化很多时候就是指减少Stop-the-world发生的时间。
按代的垃圾回收机制
在Java程序中不能显式地分配和注销内存。有些人把相关的对象设置为null或者调JIJ System. gc() 来试图显式地清理内存。设置为null至少没什么坏处,但是调用System, gc()会显著地影响系统性能, 必须彻底杜绝(还好,我还没冇见到NIH的哪个开发者调用这个方法)。
在Java中,开发人员无法直接在程序代码中淸理内存,而是山垃圾回收器自动寻找不必要的垃圾 对彖,并且清理掉他们。垃圾回收器会在下面两种假设(hypotheses)成立的情况下被创建(称之为假 设不如改为推测(suppositions)或者前提(preconditions))。
大多数对彖会很快变得不可达
只有很少的由老对象(创建时间较长的对象)指向新生对象的引用
这些假设我们称之为弱年代假设(weak generational hypothesis) o为了强化这一假设,HotSpot 虚拟机将其物理上划分为两个-新生代(young generation)和老年代(old generation)。
新生代(Young generation):绝大多数最新被创建的对彖会被分配到这里,山于大部分对象在创建后 会很快变得不可到达,所以很多对象被创建在新生代,然后消失。对彖从这个区域消失的过程我们称Z 为minor GC 。
老年代(Old generation):对彖没冇变得不可达,并且从新生代中存活下來,会被拷贝到这里。 其所占用的空间耍比新牛?代多。也」E由于其相对较人的空间,发生在老年代上的GC要比新牛代少得多。
对象从老年代中消失的过程,我们称之为major GC “(或者full GC “)
请看下面这个图表。
allocations
Young Generation
Young Generation
OOD— 2i
OOD
— 2i 1
Permanent GenerationOld Generation
Permanent Generation
图1 : GC空间数据流
上图中的持久代(permanent generation )也被称为方法区(method area)。他用来保存类 常量以及字符串常量。因此,这个区域不是用來永久的存储那些从老年代存活下來的对彖。这个区域也 可能发牛GC。并且发生在这个区域上的GC事件也会被算为major GC。
冇些人可能会问:
如果老年代的对象需要引用一个新生代的对象,会发生什么呢?
为了解决这个问题,老年代中存在一个” card table “,他是一个512 byte大小的块。所有老年代的对 象指向新生代对彖的引用都会被记录在这个表中。当针对新生代执行GC的时候,只需要查询card table 來决定是否可以被收集,而不用査询整个老年代。这个card table fl]—个write barrier來管理。write barrier给GC带來了很人的性能提升,虽然由此可能带來一些开销,但GC的整体时间被显著的减少。
Card Table
图 2: Card Table 结构
新生代的构成
为了更好地理解GC,我们现在来学习新生代,新生代是川来保存那些第一次被创
您可能关注的文档
- 清水泵四大标准.docx
- 清水河流域污水淹没边缘村落耕地的治理.docx
- 清水混凝土精细化管理工艺控制卡.docx
- 清水塘老工业区搬迁企业职工安置问题的思考.docx
- 清水县贾川乡学区学校资产管理办法.docx
- 清溪小学作业评价标准.docx
- 清心安神口服液项目立项申请报告.docx
- 清远漂流作文.docx
- 清远市学前教育学会章程.docx
- 清障工程施工工法.docx
- 广东省东莞市2025年数学三上期末综合测试模拟试题含解析.doc
- 淀粉-乳清蛋白脂肪模拟物的制备表征及其应用.pdf
- 玩具经营2026年面部识别应用培训课件.pptx
- 郑州市主城区城市公园乡土植物景观应用评价与优化策略.pdf
- 拔高冲刺卷-【05卷·模拟卷】2025届中考地理测试卷(广东专用)(原卷版)-A4.docx
- 黔南民族师范学院《虚拟现实技术基础与导论》2023-2024学年第一学期期末试卷.doc
- 基于交互理念的乡村景观更新研究--以刁窝村为例.pdf
- 河南省皂荚古树现状调研及数字化保护研究.pdf
- 广东省阳江市阳东区七年级上学期期末地理试题(解析版)-A4.docx
- 基于康养理念的景区依托型乡村发展策略研究--以云台山景区一斗水村为例.pdf
最近下载
- 一种融合热红外的稀土矿开采区识别方法、系统和介质.pdf VIP
- 上海交通大学学生生存手册.PDF
- 一种矿山开采原始数字高程模型重建方法、系统和介质.pdf VIP
- 公路工程质量检测收费项目和收费标准(附交通建设工程质量检测和工程材料试验收费标准).pdf VIP
- 止动片冲压模具设计..doc VIP
- 计算机组成原理(修订版)张功萱习题参考答案.pdf
- 字节跳动泛舆情域智能监控中台架构解读及实践.pdf VIP
- 欧科 EKAC230BR1LH-FAA、EKAC250BR1LH-FAA 安装使用维修说明书.pdf
- 2024-2025学年广东省深圳市龙岗区多校三年级上册期中模拟数学试卷含答案.pdf VIP
- 2021年六年级语文上学期开学测试试卷-人教版A卷-(附解析).doc VIP
原创力文档

文档评论(0)