GC的基本原理
Java的内存管理实际上就是对象的管理,其中包括对象的分配和释放。
对于程序员来说,分配对象使用new关键字;释放对象时,只要将对象所有引用赋值为null,让程序不能够再访问到这个对象,我们称该对象为"不可达的".GC将负责回收所有"不可达"对象的内存空间。
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对 象(详见 参考资料1 )。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的".当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。但是,为了保证 GC能够在不同平台实现的问题,Java规范对GC的很多行为都没有进行严格的规定。例如,对于采用什么类型的回收算法、什么时候进行回收等重要问题都没 有明确的规定。因此,不同的JVM的实现者往往有不同的实现算法。这也给Java程序员的开发带来行多不确定性。本文研究了几个与GC工作相关的问题,努 力减少这种不确定性给Java程序带来的负面影响。
增量式GC( Incremental GC )
GC在JVM中通常是由一个或一组进程来实现的,它本身也和用户程序一样占用heap空间,运行时也占用CPU.当GC进程运行时,应用程序停止运行。 因此,当GC运行时间较长时,用户能够感到Java程序的停顿,另外一方面,如果GC运行时间太短,则可能对象回收率太低,这意味着还有很多应该回收的对 象没有被回收,仍然占用大量内存。因此,在设计GC的时候,就必须在停顿时间和回收率之间进行权衡。一个好的GC实现允许用户定义自己所需要的设置,例如 有些内存有限有设备,对内存的使用量非常敏感,希望GC能够准确的回收内存,它并不在意程序速度的放慢。另外一些实时网络游戏,就不能够允许程序有长时间 的中断。增量式GC就是通过一定的回收算法,把一个长时间的中断,划分为很多个小的中断,通过这种方式减少GC对用户程序的影响。虽然,增量式GC在整体 性能上可能不如普通GC的效率高,但是它能够减少程序的最长停顿时间。
Sun JDK提供的HotSpot JVM就能支持增量式GC.HotSpot JVM缺省GC方式为不使用增量GC,为了启动增量GC,我们必须在运行Java程序时增加-Xincgc的参数。HotSpot JVM增量式GC的实现是采用Train GC算法。它的基本想法就是,将堆中的所有对象按照创建和使用情况进行分组(分层),将使用频繁高和具有相关性的对象放在一队中,随着程序的运行,不断对 组进行调整。当GC运行时,它总是先回收最老的(最近很少访问的)的对象,如果整组都为可回收对象,GC将整组回收。这样,每次GC运行只回收一定比例的 不可达对象,保证程序的顺畅运行
- 浏览: 425686 次
- 性别:
- 来自: 成都
最新评论
-
binghc:
能使用浏览器作为客户端么,用socket构建一个最简单的htt ...
HTTPS那些事 用java实现HTTPS工作原理 -
littleShyBoy:
如果是使用http client请求https的接口,http ...
HTTPS那些事 用java实现HTTPS工作原理 -
skw1975:
...
HTTPS那些事 用java实现HTTPS工作原理 -
sealinesu:
看了半天,真的是半天,总算是把这些概念都理清了,谢谢博主
spring事务传播机制实例讲解 -
wanghaozdw:
请问下,在内外层事务均是REQUIRED的情况下,内层事务抛出 ...
spring事务传播机制实例讲解
相关推荐
再者,GC原理涉及到垃圾收集算法,主要包括分代收集算法和分区收集算法。分代收集算法是目前主流的收集方式,它将堆内存分为新生代和老年代,根据对象的存活周期不同,采用不同的收集策略。新生代采用复制算法,因为...
本文档可以作为学习JVM GC的工具书所使用,对于想深入学习JVM GC原理的同学,这一本书就足够了。因为本文档是作者花费数月时间,查阅GC相关的国内外众多资料并加以思路清晰的条目化而形成。因为篇幅所限,可能有部分...
在JVM GC原理和heapsize调优的学习和实践过程中,需要理解多个关键概念和操作步骤,下面详细展开: 1. 垃圾回收机制的理解 在Java中,当对象不再被引用时,它们应该被垃圾回收器回收。GC机制基于几个关键概念工作,...
总结来说,"TLZ850M06GC原理图和PCB封装"的掌握是电子设计中的基础环节,涉及到从电路原理到实物实现的关键步骤。通过Allegro软件,设计师可以有效地管理和利用这些资源,从而提高设计效率和产品质量。对这些知识的...
【GC原理详解】 1. 好产品(Good Product):好产品不仅关注产品本身的质量和功能,还包括价格合理性、包装设计、使用便捷性等多方面因素。它要求企业站在客户的角度去思考,确保产品能满足客户的真实需求,并与...
Java虚拟机(JVM)是Java程序运行的基础,它为Java应用程序提供了运行环境。...总的来说,理解JVM内存分配和GC原理,以及如何选择和配置垃圾收集器,对于提升Java应用的性能和稳定性有着至关重要的作用。
【GC原理】 GC,全称气相色谱,是一种基于化合物在气态环境中通过特定物质(固定相)时保留时间差异来进行分离分析的技术。它不是依赖物理分离方法(如蒸馏),而是利用时间差异来区分混合物中的各组分。 1. **分离...
导语想写一篇关于androidGC的想法来源于追查一个魅族手机图片滑动卡顿问题,由于不断的GC导致的丢帧卡顿的问题让我们想了很多方案去解决,所以就打算详细的看看内存分配和GC的原理,为什么会不断的GC,GCALLOC和...
【GC营销理论】GC营销理论是中国特色营销实践中发展出来的一种理论模型,主要针对现代营销环境的复杂性,强调从效率和直接效果出发,构建企业竞争优势。GC理论由四个核心概念构成:好产品(Good Product)、好广告...
在深入研究Lua GC的原理之前,我们先来梳理一下内存管理和自动垃圾回收的基本概念。 内存管理是编程语言和运行时环境中的一个基本功能,它涉及到分配、使用、管理和释放内存。在手动内存管理的情况下,程序员必须...
通过对GC原理的理解和合理配置,开发者可以有效地管理Java应用的内存使用,提高应用的性能和稳定性。无论是增量式GC还是分代收集策略,都是为了更好地适应不同应用场景的需求,实现最优的内存管理方案。
LM1875直流输出型双声道+5532前级合并式功放板,功率小点,优势就在于低频可以提升。高频和中频丝毫没有减弱,适合于电脑多媒体或小房内使用。自己DIY的,呵呵!原理图
JVM(Java Virtual Machine)的垃圾回收(Garbage Collection,简称GC)是Java程序自动内存管理的关键机制。它负责识别不再使用的对象并释放其占用的...理解GC原理和不同类型的收集器对于优化Java应用的性能至关重要。
四、GC原理与优化 垃圾收集(Garbage Collection, GC)是Java平台的一项核心特性,它自动管理内存,避免了手动内存释放可能导致的问题。VisualGC可以帮助开发者理解和调整GC策略: 1. **垃圾收集器类型**:Java有...
在设计电路时,理解PL2303的原理图至关重要。原理图通常会展示各个组件如何连接,以及PL2303与其他元件的交互方式。主要组成部分可能包括: 1. **电源部分**:PL2303需要稳定的电源供应,一般为+5V。电源输入通常...
理解GC的工作原理对于优化程序性能、防止内存泄漏以及提高系统稳定性至关重要。这篇文章将深入探讨Java中的垃圾收集机制,以及如何通过源码和工具来理解和分析GC的行为。 首先,垃圾收集是Java虚拟机(JVM)自动...
为了充分利用ga441工具,你需要理解基本的GC原理,例如标记-清除、复制、标记-整理和分代收集等算法,以及它们对性能的影响。此外,了解WAS的内存架构,比如新生代、老年代、永久代(在Java 8后改为元空间)等区域的...
本文将详细介绍VisualVM以及其VisualGC插件的功能、使用方法以及背后的GC原理。 首先,VisualVM是由Sun Microsystems(现已被Oracle收购)开发的一款免费工具,它集成在Java Development Kit (JDK) 中,无需额外...