首页 > 编程知识 正文

java性能权威指南pdf百度云,java性能优化权威指南pdf

时间:2023-05-06 13:10:53 阅读:23792 作者:4942

主要内容:

1 .堆大小设置

JVM中的最大堆大小有三个限制。 相关操作系统数据模型(32位还是64位)限制可用虚拟内存限制可用物理内存限制。 在32位系统中,一般限于1.5G~2G; 64没有操作系统内存限制。 我在Windows Server 2003系统、3.5G物理内存和JDK5.0上进行了测试,将最前端的DSP设置为1478m。

标准设置:

o Java-xmx 3550 m-xms 3550 m-xmn2g-xs 128 k

- xmx 3550m :将JVM的最大fzdsp堆内存设置为3550 m。

- xms 3550m :将JVM初始堆内存设置为3550 m。 可以设置与-Xmx相同的值,以防止每次垃圾回收完成时JVM重新分配内存。

-Xmn2G :将年轻一代的大小设置为2g。 整个JVM的内存大小=年轻一代的大小;老一代的大小;永久一代的大小。 永久世代一般固定在64m的大小,所以年轻世代越大,老世代的大小就越小。 此值对系统性能有很大影响,建议Sun正式配置为整个堆的3/8。 注意:从Java 8开始,“永久”已从HotSpot虚拟机中删除)

-Xss128k :设置每个线程的堆栈大小。 JDK5.0或更高版本的线程堆栈大小为1M,以前的线程堆栈大小为256K。 调整更适用线程所需的内存大小。 在同一物理内存下,减小此值将生成更多线程。 但是,操作系统在一个进程中的线程数量有限,不能无限生成,经验值在3000~5000左右。

o Java-xmx 3550 m-xms 3550 m-xs s128 k-xx : newratio=4- xx 3360 survivor ratio=4- xx 3360 maxperm size=16m-xx 3360 maxx

-XX:NewRatio=4:设置包含swdsn和两个Survivor区域的年轻层代与旧层代之间的比率(永久层代除外)。 如果设置为4,则年轻一代和老一代所占比例为1:4,年轻一代占整个堆栈的1/5

- xx : survivor ratio=4:设置年轻一代swdsn区与survivor区的大小比。 如果设置为4,则两个Survivor区域与一个swdsn区域的比率为2:4,一个Survivor区域占整个年轻一代的1/6

-将-XX:MaxPermSize=16m:永久大小设置为16m。

- xx :最大年龄=0:设置最大垃圾年龄。 如果设置为0,则年轻一代的对象不通过Survivor区,直接进入老一代。 对于年老一代多的APP应用,可以提高效率。 如果将此值设置为较大的值,则年轻一代的对象将在Survivor区域中多次复制,从而增加对象在年轻一代中的生存时间,并增加被年轻一代回收的概率。

2 .回收器的选择

JVM有三种选择:串行收集器、并行收集器和并行收集器,但串行收集器仅在数据量较小时可用,因此此处的选择主要针对并行收集器和并行收集器。 缺省情况下,JDK5.0使用串行收集器。 要使用其他收集器,必须在启动时添加相应的参数。 从JDK5.0开始,JVM将根据当前的系统配置进行确定。

1 .吞吐量优先的并行收集器

如上所述,并行采集器主要以达到一定的吞吐量为目标,适用于科学技术和后台处理等。

典型配置:

Java-xmx 3800 m-xms 3800 m-xmn2g-xs s128 k-xx : useparallelgc-xx 3360 parallelgcthreads=20

-XX: UseParallelGC :选择垃圾收集器作为并行收集器。 此配置仅对年轻一代有效。 也就是说,在上述配置中,年轻一代使用并发收集,而老一代仍然使用串行收集。

-XX:ParallelGCThreads=20 :构成并行收集器的线程数。 同时进行垃圾回收的线程数。 建议将此值设置为与CPU数量相同。

jva-xmx 3550 m-xms 3550 m-xmn2g-xs s128 k-xx : useparallelgc-xx 3360 parallelgcthreads=20-xx : useparallelloldgc

-XX: UseParallelOldGC :将老一辈垃圾收集方式设置为并行收集。 JDK6.0支持同时收集到老一代。

Java-xmx 3550 m-xms 3550 m-xmn2g-xs s128 k-xx : useparallelgc-xx : maxgcpausemillis=100

- xx : maxgcpausemillis=1003360设置年轻一代垃圾回收的最长时间。 如果不能满足此时间,JVM将自动调整年轻一代的大小以满足此值。

jva-xmx 3550 m-xms 3550 m-xmn2g-xs s128 k-xx : useparallelgc-xx 3360 maxgcpausemillis=100-xx : useadaptivesizeposiose

-XX: UseAdaptiveSizePolicy :如果设置此选项,并行收集器会自动选择年轻一代的区域大小和对应的Survivor区域比例,以达到目标系统规定的最低响应时间或收集频率等使用并行收集器时,建议始终打开。

2 .响应时间优先的并发收集器

如上所述,同时收集器主要是确保系统的响应时间,减少垃圾收集时的休眠时间。 适用于APP应用服务器、通信领域等。

典型配置:

jva-xmx 3550 m-xms 3550 m-xmn2g-xs 128 k-xx : parallelgcthreads=20-xx : useconcmarksweepgc-xx 3360 useparnewgc

-XX: UseConcMarkSweepGC :设置和收集老年人代理。 在测试中配置它后,-XX:NewRatio=4的配置无效。 理由尚不清楚。 因此,在该情况下,优选将年轻一代的大小设定为-Xmn。

-XX: UseParNewGC:配备年轻一代代为并行收集。 可与CMS收集同时使用。 在JDK5.0或更高版本中,JVM是根据系统配置自己设置的,因此不需要设置此值。

jva-xmx 3550 m-xms 3550 m-xmn2g-xs s128 k-xx : useconcmarksweepgc-xx 3360 cmsfullgcsbeforecompaction=5- xx 3360 u section

- xx : cmsfullgcsbeforecompaction :并行收集器不压缩和组织内存空间,因此运行一段时间后会出现“碎片化”,降低执行效率。 该值用于设定运行GC多少次后压缩和组织内存空间。

- xx : usecmscompactatfullcollection :打开对老一代的压缩。 虽然可能影响性能,但可以去除碎片。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。