调优实战
较小堆引起的碎片问题:因为老年代的并发收集器使用标记、清除算法,所以不会对
堆进行压缩。当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象
但是,当堆空间较小时,运行一段时间以后,就会出现“碎片”,如果并发收集器找不到足
够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果出
现“碎片”,可能需要进行如下配置:)**:<,010!"7#.#520!7=!使用并发收集器
时,开启对老年代的压缩;)**:015280,/! 0!"7=! 上面配置开启的情况下,这
里设置多少次 5280 后,对老年代进行压缩。
>?监控实例?>
内存池名称:&2 8
(虚拟机最初向操作系统请求的内存量:字节
(虚拟机实际能从操作系统获得的内存量:字节
(虚拟机可从操作系统获得的最大内存量:字节。请注意,并不一定能
获得该内存量。
(虚拟机此时使用的内存量:字节
>?监控实例?>
实例说明:系统能获得的最大 &2 8 =! 空间大小为 8 左右,此时使用
已经 8,基本满了,所以在 执行串行标记垃圾收集时,系统响应速度会很慢!
鱼苗养殖区-持久代(Permanent Generaon)
控制着所有虚拟机自己映射的数据,如类和对象的方法。在持久代中 '(" 则存储 7,,
和 "#@! 对象。持久代就像鱼苗养殖区一样,池塘主人一次对该区域投入足够量的鱼苗,
已保证其他鱼塘的足够供应。就配置而言,永久域是一个独立域并且不认为是堆的一部分
永久域默认大小为 "运行程序时,'(" 会调整永久域的大小以满足需要。每次调整时,
'(" 会对堆进行一次完全的垃圾收集。使用)**:+9 1-A 标志来增加永久域搭大小。在
;4!B-71 ( 应用程序加载较多类时,经常需要增加永久域的最大值。当 '(" 加载类时,
永久域中的对象急剧增加,从而使 '(" 不断调整永久域大小。为了避免调整,可使用)**:
9 1-A 标志设置初始值。
1.4 主人定期捕鱼-JVM 垃圾回收
一个池塘收容积限制,能养殖的鱼的数量是一定的,因此隔一段时间必须捞出部分长
第页共 页