- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
参数调优及java工具使用
GCGC是一个自动管理内存的程序。主要职责是分配内存,保证被引用的对象始终在内存,把不被应用的对象从内存中释放 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次进入老年代YOUNGYoung(Nursery),年轻代。研究表明大部分对象都是朝生暮死,随生随灭的。因此所有收集器都为年轻代选择了复制算法。 Young里面又分为3个区域,一个Eden,所有新建对象都会存在于该区,两个Survivor区,用来实施复制算法。每次复制就是将Eden和第一块Survior的活对象复制到第2块,然后清空Eden与第一块Survior。由于新生代的空间通常都比较小而且可能存在大量不再被引用的对象,所以针对新生代的GC执行频率高、速度快。Old(Tenured),年老代Old(Tenured),年老代。年轻代的对象如果能够挺过数次收集,就会进入年老代。年老代使用标记整理算法。因为年老代的对象都没那么容易死的,采用复制算法就要反复的复制对象,很不合算,只好采用标记清理算法,但标记清理算法其实也不轻松,每次都要遍历区域内所有对象 -XX:MaxTenuringThreshold=2Perm(permanent ),永生代。例如类和方法对象以及它们的描述对象。串行收集器(Serial Collector) 新生代串行新生代串行收集老生代和永生代的串行收集(mark-sweep-compact)只使用一个cpu,并且回收时,应用程序会暂停-XX:+UseSerialGC 并行收集器(Throughput Collector) 新生代并行收集,stop-the-world和copin
文档评论(0)