`
ZavaKid
  • 浏览: 20226 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

GC特性以及各种GC的选择

阅读更多

垃圾回收器的特性

  • 该回收的对象一定要回收,不该回收的对象一定不能回收
  • 一定要有效,并且要快!尽可能少的暂停应用的运行
  • 需要在时间,空间,回收频率这三个要素中平衡
  • 内存碎片的问题(一种解决内存碎片的方法,就是压缩)
  • 可扩展性和可伸缩性(内存的分配和回收,不应该成为跑在多核多线程应用上的瓶颈)

对垃圾回收器的选择

连续 VS. 并行

连续垃圾回收器,即使在多核的应用中,在回收时,也只有一个核被利用。
但并行GC会使用多核,GC任务会被分离成多个子任务,然后这些子任务在各个CPU上并行执行。
并行GC的好处是让GC的时间减少,但缺点是增加了复杂度,并且存在产生内存碎片的可能。

并发 VS. stop-the-world

当使用stop-the-world 方式的GC在执行时,整个应用会暂停住的。
而并发是指GC可以和应用一起执行,不用stop the world。

一般的说,并发GC可以做到大部分的运行时间,是可以和应用并发的,但还是有一些小任务,不得不短暂的stop the world。

stop the world 的GC相对简单,因为heap被冻结,对象的活动也已经停止。但缺点是可能不太满足对实时性要求很高的应用。
相应的,并发GC的stop the world时间非常短,并且需要做一些额外的事情,因为并发的时候,对象的引用状态有可能发生改变的。
所以,并发GC需要花费更多的时间,并且需要较大的heap。

压缩 VS. 不压缩 VS. 复制

在GC确定内存中哪些是有用的对象,哪些是可回收的对象之后,他就可以压缩内存,把拥有的对象放到一起,并把剩下的内存进行清理。
在压缩之后,分配对象就会快很多,并且内存指针可以很快的指向下一个要分配的内存地址。

一个不压缩的GC,就原地把不被引用的对象回收,他并没有对内存进行压缩。好处就是回收的速度变快了;缺点呢,就是产生了碎片。

一般来说,在有碎片的内存上分配一个对象的代价要远远大于在没有碎片的内存上分配。

另外的选择是使用一个复制算法的GC,他是把所有被引用的对象复制到另外一个内存区域中。
使用复制GC的好处就是,原来的内存区域,就可以被毫无顾忌的清空了。但缺点也很明显,需要更多的内存,以及额外的时间来复制。

2
2
分享到:
评论

相关推荐

    GC4344 24BIT 192KHZ 音频DAC

    GC4344 是一款立体声音频数模转换芯片,内部 集成数字插值滤波器、multi-bit 数模转换器、输出 模拟滤波器。...这些特性使它成为 DVD 播放解 码器、数字通信设备等音频设备的理想选择。 GC4344 采用 MSOP10 封装。

    MT6735_GC2375_Driver_20180424.rar

    格科微2M RGB摄像头GC2375的在MT6735上的驱动代码...特性: 1/5英寸标准光学格式 输出格式:RAW 10位/8位 供电要求:AVDD28:2.7~3.0V/DVDD 18:1.7~1.9V/IOVDD:1.7~3.0V MIPI接口支持:MIPI 1通道 封装:CSP/COB

    VM调优实战指南:GC与性能优化

    GC是JVM的一个重要特性,它负责自动回收不再使用的对象,以避免内存泄漏。JVM有多种GC算法,包括串行GC、并行GC、CMS(Concurrent Mark Sweep)和G1(Garbage-First)等。 实例:查看GC日志 在JVM运行过程中,可以...

    JDK11GC-cheatsheet.pdf

    JDK11相比JDK10,添加了一个新的Source-File Mode,...所以JDK11的JVM参数吸收了JDK9,JDK10的新特性和改动,并在他们的基础上进行了微调。 同样在文章最后,我也将JDK11的GC调优秘籍做成了一张PDF,欢迎大家下载。

    Java9中的GC调优基础

    Java9引入了很多新的特性,除了闪瞎眼的ModuleSystem和REPL,最重要的变化我认为是默认GC(GarbageCollector)修改为新一代更复杂、更全面、性能更好的G1(Garbage-First)。JDK的维护者在GC选择上一直是比较保守的...

    网络爬虫goodcrawler.zip

    1、具有DSL特性的模板。 2、分布式、可扩展。 3、辛亏有htmlunit,它能较好地支持javascript。 5、合理的插件设计,方便功能扩充。 6、天然继承es,本身即是一个完整的搜索引擎。 下载独立运行版 ...

    Java Garbage Collection 与各种GC算法.zip

    面向对象:Java全面支持面向对象的特性,如封装、继承和多态,使得代码更易于维护和扩展。 安全:Java提供了丰富的安全特性,如禁止指针运算、自动内存管理和异常处理机制,以减少程序错误和恶意攻击的可能性。 ...

    JVM、GC详解及调优.pdf

    本文档详细讲解了JVM(Java Visual Mathine)的方方面面,首先由java的特性来描绘JVM的大致应用,再详细阐释了 JVM 的原理及内存管理机制和调优,讲述了与JVM密切相关的 Java GC 机制,最后对 JVM 调优进行了总结。...

    12C新特性.zip资源包

    Oracle Univerci Oracle 大学内部资料 只有考过的人才能下载! 奉献大家!拿走不谢; D77758CN20_ag1 D77758CN20_ag2 (2...D77758CN20_sg1 D77758CN20_sg2(2本中文教材)D77758GC20_sg1 D77758GC20_sg2(2本英文教材)

    秸秆气化焦油蒸馏产物GC-MS与TG-DTA测定分析

    为了利用秸秆气化焦油,测定了秸秆气化焦油112~150℃蒸馏产物上层液的pH、凝点、闪点、恩氏黏度、密度、高位发热量,利用气相色谱-质谱联用仪和综合热分析仪进行秸秆气化焦油112~150℃蒸馏产物上层液GC-MS分析试验和...

    不同生活习性下原核生物基因组大小与GC含量的关系研究 (2011年)

    选取了有代表性的411种原核生物(包括古细菌与真细菌),分别从最适生长温度、氧气偏好性、运动特性、水生特性和寄生特性等因素进行分析,发现基因组大小与GC含量的相关性确实受这些因素的影响,而寄生原核生物中显示出...

    煤制油废水中溶解性有机物(DOM)在生物处理过程中的变化特性

    本论文针对煤制油废水在A/O处理过程中有机物的变化特性进行了深入分析,旨在评价A/O处理工艺的效果、明确DOM的变化特性、筛选出A/O处理后的特征污染物,为后续深度处理提出针对性建议。本论文运用气象色谱质谱联用仪...

    腐殖酸中含氧基团与铝盐选择共聚特性

    腐殖酸中含氧基团与铝盐选择共聚特性,金鹏康,王晓昌 ,本文在弱酸性和中性两种pH条件下,通过对腐殖酸混凝前后红外光谱和热裂解-GC-MS分析,研究了腐殖酸与铝盐的化学作用机制。实验结果�

    煤低温氧化阶段气体吸附与解析过程特性研究

    运用自行研制的煤自燃特性综合测试装置和GC4000A型气相色谱仪,根据耗氧量、生成气体两个关键指标分析研究了不同煤种低温氧化阶段气体吸附与解析过程特性。认为:耗氧速率缓慢、耗氧曲线平缓是煤低温氧化阶段共有的...

    浅析Java中的GC垃圾回收器的意义及与GC的交互

    主要介绍了Java中的GC垃圾回收器的意义及与其的交互,GC是Java虚拟机JVM的一项重要特性,需要的朋友可以参考下

    典型城市固体废物热解及热解油的 GC-MS分析 (2012年)

    针对城市固体废弃物( MSW)高效能源化及产物高值化利用的发展需求,利用管式炉实验 及色质联用( GC-M S)分析仪对典型 MSW进行热解特性研究,探索了热解产物产率和组分特性 的变化规律.实验结果表明:热解温度对热解过程...

    褐煤热解及半焦成型特性研究

    以褐煤为原料,通过原煤热解与半焦成型实验,研究了热解终温对产物分布的影响及半焦的成型特性与反应活性;利用气体在线分析仪、GC-MS对热解产物进行表征;研究结果表明,热解温度由450℃提高到750℃,热解气体产率持续...

    红树林共附生微生物HSL36的鉴定及其主要代谢产物GC/MS分析 (2011年)

    从湛江红树林的根部中分离筛选一株潜在益生菌,命名HSL36,通过形态观察,并进行生理生化特性分析和16SrDNA序列分析后,鉴定为戊糖乳杆菌(Lactobacilluspentosus)。采用气-质联用技术(GC-MS)对菌株HSL36胞外代谢产物进行...

    Java内存以及GC

     各个区域的特性总结如下表:  补充说明:  当多线程情形下,可能多个线程要在堆上分配内存,那么可能出现内存分配的同步问题,解决方案有两个,一个是同步内存分配动作;另一个是采用TLAB,即在Java堆中...

Global site tag (gtag.js) - Google Analytics