网站大量收购独家精品文档,联系QQ:2885784924

JVM垃圾回收原理GC.ppt

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JVM垃圾回收原理GC

理解和探查内存不足/内存泄漏 WebLogic Support Patterns 理解和探查内存不足/内存泄漏 Garbage Collection GC Description What’s GC? GC用于跟踪内存中的对象,并回收那些不再被其他对象引用的对象。 内存中的对象类型 活动对象:即当前正在其他对象引用的对象。 非活动对象:这类对象不再被其他对象所引用,是孤立的对象。这类对象可以被回收,回收的堆空间用于分配给其它新创建的对象。 GC Description(2) GC何时会被触发 ? 系统空闲 GC线程的优先级低于系统应用线程,当系统中没有应用线程执行时,GC会被触发。 堆空间内存不足 当堆空间的内存不足以创建新对象时,GC会被触发。如果第一GC仍不能获得足够的空间,第二次GC将被触发,如果这一次仍无法获取足够的空间, “Out of memory” 将被抛出。 GC Description(3) 影响GC执行时间、频度的因素 JVM 堆(heap)空间的大小 堆空间设置偏大,完全GC执行比较耗时,但执行频率会降低。 堆空间设置恰好符合应用内存需求,完全GC执行很快,但执行会变得更频繁。 Heap Description 什么是堆(heap)空间 堆是java程序中对象存活的地方,其中包括: 活动对象 非活动对象,这类对象不再为应用程序中的任何指针能够到达。 剩余内存 堆空间中包含三种区域: 新生代(young generation) 旧生代(tenured generation) 永生代(permanent generation) Heap Description(2) 新生代(young generation) 新生代被分为两块: Eden、Survivor spaces Eden是为新对象分配的地方,很多对象分配后就变成非活动对象,即垃圾对象。这类对象具有“infant mortality”(幼儿死亡率)。如:方法体中的临时对象。 Survivor spaces也被称为两片生存空间,其中一片要保证任何时刻是空的,并作为下一个空间的目的地。当GC发生的时候,Eden中的存活对象被移入下一片空间。对象在生存空间之间移动,直到它们老化(达到存活时间阀值),然后被移入旧生代。 Eden中对象满的时候,发生一次小收集(minor collection),小收集执行时间取决于Eden中对象的infant mortality。infant mortality高,执行就会很快。 Heap Description(3) 旧生代(tenured generation) 该区域用于存放那些生命周期比较长的对象,Eden中的活动对象经过minor collection后,被复制到两片生存空间,当两片生存空间中的对象老化时,这些对象被移入旧生代。 旧生代中对象满的时候,发生一次大收集(major collection),因为收集时要涉及所有存活对象,所以大收集的速度相对于小收集要慢很多。 Heap Description(4) 下图展示了典型应用中,对象生存周期 Heap Description(5) 永生代(permanent generation) 这个代比较特别,它负责保存反射对象。这些数据是虚拟机所需的数据,用来描述在Java语言中没有等同物的对象。例如,描述类与方法的对象存储在永生代中。 Heap Description(6) 分代后的heap结构 Performance Tuning 下图显示了GC性能对整个系统性能的影响 Performance Tuning(2) 从上图可以看出: 如果系统花费在GC上的时间为1%,一旦系统跨越32个处理器时,系统的吞吐量(Throughput)将减少20% 如果系统花费在GC上的时间为10%,一旦系统跨越32个处理器时,系统的吞吐量(Throughput)将减少高达75% Note:所谓throughput,即系统用于处理非GC时间的比例。 Performance Tuning(3) Performance measurement Pause: the times when an application appears unresponsive because garbage collection is occurring. Footprint: the working set of a process, measured in pages and cache lines . Promptness :the time between when an object becomes dead and when the memory becomes available.

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档