![](https://csdnimg.cn/release/download_crawler_static/10626424/bg7.jpg)
JVM 调优实战
第 4 页 共 34 页
片”,可能需要进行如下配置: -XX:+UseCMSCompactAtFullCollection 使用并发收集器时,开
启对老年代的压缩;-XX:CMSFullGCsBeforeCompaction=0 上面配置开启的情况下,这里设置
多少次 Full GC 后,对老年代进行压缩。
/*监控实例*/
内存池名称: Tenured Gen
Java 虚拟机最初向操作系统请求的内存量: 3,538,944 字节
Java 虚拟机实际能从操作系统获得的内存量: 1,431,699,456 字节
Java 虚拟机可从操作系统获得的最大内存量: 1,431,699,456 字节。请注意,并不一定能
获得该内存量。
Java 虚拟机此时使用的内存量: 1,408,650,472 字节
/*监控实例*/
实例说明:系统能获得的最大 Tenured Generation 空间大小为 1.431G 左右,此时使用已
经 1.408G,基本满了,所以在 JVM 执行串行标记垃圾收集时,系统响应速度会很慢!
鱼苗养殖区-持久代(Permanent Generation)
控制着所有虚拟机自己映射的数据,如类和对象的方法。在持久代中 jvm 则存储 class
和 method 对象。持久代就像鱼苗养殖区一样,池塘主人一次放该区域投入足够量的鱼苗,
已保证其他鱼塘的足够供应。就配置而言,永久域是一个独立域并且不认为是堆的一部分。
永久域默认大小为 4m.运行程序时,jvm 会调整永久域的大小以满足需要。每次调整时,jvm
会对堆进行一次完全的垃圾收集。 使用-XX:MaxPerSize 标志来增加永久域搭大小。在
WebLogic Server 应用程序加载较多类时,经常需要增加永久域的最大值。当 jvm 加载类时,
永久域中的对象急剧增加,从而使 jvm 不断调整永久域大小。为了避免调整,可使用-XX:
PerSize 标志设置初始值。
1.4 主人定期捕鱼-JVM 垃圾回收
一个池塘收容积限制,能养殖的鱼的数量是一定的,因此隔一段时间必须捞出部分长成
的鱼来使主人能喂养跟多的鱼。同样,JVM 所管理的有限内存也要实现最优化利用,Garbage
Collection(GC)就是用来释放没有被引用的对象所占领的内存,目的在于清除不再使用的对
象。GC 通过算法和参数的配置可以对性能产生效果显著的影响。
GC 就好像把长成的鱼从池塘中捞出来拿到市场上去卖,然后给池塘腾出空间继续养别