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

JVM参数调优及JAVA工具使用 .ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
追求最大吞吐量 * Concurrent Low Pause Collector-CMS 永生代-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled * 追求最小pause -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled * GC JAVA TOOLS 谢刚 2009-7-27 GC GC是一个自动管理内存的程序。主要职责是分配内存,保证被引用的对象始终在内存,把不被应用的对象从内存中释放 GC会自动计算对象被引用的情况,只要对象不再被引用,相应的内存就会被回收,另外,GC非常重要的一点就避免内存碎片,道理跟windows的磁盘整理一样,把使用中各个内存块整合起来,这样才能保证有足够的空间来存储大对象。 理想中的GC 该回收的回收,不该回收的绝不回收 GC要快而且GC运行时,不能导致应用程序的停顿。 限制内存碎片,对象被回收以后,所使用的内存会被回收,如果不加处理内存中就会出现大量的内存碎片,这样就有可能导致因为没有足够的连续空间分配给某些大对象而导致OutofMemory。消除内存碎片的的手段之一就是“内存压缩”。 可扩展性(Scalability),内存的分配和回收都不能成为应用程序的瓶颈 GC的性能评判标准 吞吐量(Throughput)—全部时间中不用于GC的比例。(重点) 暂停时间—GC过程中应用程序执行暂停的时间。(重点) GC的开销—全部时间中用于GC的比例。 GC的频率—通过跟应用程序的执行比较来得到GC的执行频率。 支持GC运行所需使用的内存大小—例如heap的大小。 GC的及时性(Promptness)—一个对象从被废弃到内存被回收之间的时间差 堆(HEAP) JVM管理的内存叫堆。在32Bit操作系统上有4G的限制,而64Bit的就没有。 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64但小于1G。 JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4但小于1G。 -XX:MinHeapFreeRatio=40? -XX:MaxHeapFreeRatio=70 服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小 收集算法(一) 复制(copy):将堆内分成两个相同空间,从根(ThreadLocal的对象,静态对象)开始访问每一个关联的活跃对象,将空间A的活跃对象全部复制到空间B,然后一次性回收整个空间A 优点:遍历对象成本小,由于只遍历活跃对象 缺点:复制成本高,需要较多的内存 标记清除(mark-sweep):收集器先从根开始访问所有活跃对象,标记为活跃对象。然后再遍历一次整个内存区域,把所有没有标记活跃的对象进行回收处理。 优点:不用复制 缺点:遍历整个空间的成本较大暂停时间随空间大小线性增大,而且整理后堆里的碎片很多。 收集算法(二) 标记整理(mark-sweep-compact) 这个算法有3个阶段,mark(标识回收对象),sweep(清除),compact(压缩)。 综合前两者的做法和优点,先标记活跃对象,然后将其合并成较大的内存块 收集算法(三) 分代( Generations ) 分代根据对象的生命周期长短,把堆分为3个代: Young(年轻代、新生代) Old(年老代、老生代) Permanent(永生代) 优点:根据不同代的特点采用不同的收集算法,扬长避短 堆内存分布图 -Xms1024m -Xmx1024m 堆大小 -XX:NewSize=256m -XX:MaxNewSize=256m 新生代大小 -XX:PermSize=128m -XX:MaxPermSize=128m 永生代大小 -Xss128K 单线程栈的大小 -XX:MaxTenuringThreshold=2 新生代对象经过2次进入老年代 YOUNG Young(Nursery),年轻代。研究表明大部分对象都是朝生暮死,随生随灭的。因此所有收集器都为年轻代选择了复制算法。 ??? Young里面又分为3个区域,一个Eden,所有新建对象都会存在于该区,两个Survivor区,用来实施复制算法。每次复制就是将Eden和第一块Survior的活对象复制到第2块,然后清空Eden与第一块Survior。 由于新生代的空间通常都比较小而且可能存在大量不再被引用的对象,所以针对新生代的GC执行频率高、速度快。 Old(Tenured),年老代 Old(Tenured),年老代。年轻代的对象如果能够挺过数次收集,就会进入年老代。年老代使用标记整理算法。因为年老代的对象都没那么容易死的,采用复制算法就要反复的复制对

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档