全球旧事资料 分类
的新域中以便压缩堆栈。这种收集器也停止其他操作。23复制收集器这种收集器将堆栈分为两个域,常称为半空间。每次仅使用一半的空间,jvm生成的新对象则放在另一半空间中。gc运行时,它把可到达对象复制到另一半空间,从而压缩了堆栈。这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率降低。24增量收集器增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾。这会造成较小的应用程序中断。25分代收集器这种收集器把堆栈分为两个或多个域,用以存放不同寿命的对象。jvm生成的新对象一般放在其中的某个域中。过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中。分代收集器对不同的域使用不同的算法以优化性能。26并发收集器并发收集器与应用程序同时运行。这些收集器在某点上(比如压缩时)一般都不得不停止其他操作以完成特定的任务,但是因为其他应用程序可进行其他的后台操作,所以中断其他处理的实际时间大大降低。27并行收集器并行收集器使用某种传统的算法并使用多线程并行的执行它们的工作。在多cpu机器上使用多线程技术可以显著的提高java应用程序的可扩展性。3Su
HotSpot141JVM堆大小的调整Su
HotSpot141使用分代收集器,它把堆分为三个主要的域:新域、旧域以及永久域。Jvm生成的所有新对象放在新域中。一旦对象经历了一定数量的垃圾收集循环后,便获得使用期并进入旧域。在永久域中jvm则存储class和method对象。就配置而言,永久域是一个独立域并且不认为是堆的一部分。下面介绍如何控制这些域的大小。可使用Xms和Xmx控制整个堆的原始大小或最大值。下面的命令是把初始大小设置为128M:javaXms128mXmx256m为控制新域的大小,可使用XXNewRatio设置新域在堆中所占的比例。下面的命令把整个堆设置成128m,新域比率设置成3,即新域与旧域比例为1:3,新域为堆的14或32M:
fjavaXms128mXmx128mXXNewRatio3可使用XXNewSize和XXMaxNewsize设置新域的初始值和最大值。下面的命令把新域的初始值和最大值设置成64mjavaXms256mXmx256mXm
64m永久域默认大小为4m。运行程序时,jvm会调整永久域的大小以满足需要。每次调整时,jvm会对堆进行一次完全的垃圾收集。使用XXMaxPerSize标志来增加永久域搭大小。在WebLogicServer应用程序加载较多类时,经常需要增加永久域的最大值。当jvm加载类时,永久域中的对象急剧增加,从而使jvm不断调整永久域大小。为了避免调整,可使用XXPerSize标志设置初始值。下面r
好听全球资料 返回顶部