365bet亚洲真人网址-365双试投注-365体育平台bet下载入口

一文彻底搞懂JVM参数配置

文章目录 1. JVM参数配置2. 调优堆栈内存2.1 堆栈大小典型配置参数 3. 调优回收器GC(Garbage Collection)3.1 吞吐量优先的GC典型配置参数3.2 响应时间

一文彻底搞懂JVM参数配置

文章目录

1. JVM参数配置2. 调优堆栈内存2.1 堆栈大小典型配置参数

3. 调优回收器GC(Garbage Collection)3.1 吞吐量优先的GC典型配置参数3.2 响应时间优先的GC典型配置参数3.3 用于辅助的GC典型配置参数

1. JVM参数配置

JVM(Java虚拟机)参数配置是指在启动Java应用程序时,可以通过设置一系列参数来调整JVM的行为和性能。这些参数可以影响内存管理、垃圾回收、线程管理、类加载等方面。

JDK 1.7及以前,Java 类信息、常量池、静态变量都存储在 Perm(永久代)里。类的元数据和静态变量在类加载的时候分配到 Perm,当类被卸载的时候垃圾收集器从 Perm 处理掉。 JDK 1.8 的 JVM 架构将类元数据放到本地内存中 ,另外,将常量池和静态变量 放到 Java 堆里。HotSopt VM 将会为类的元数据明确分配和释放本地内存。

在这种架构下,类元信息突破了原来 -XX:MaxPermSize 最大方法区大小参数的限制,所以PermSize的JVM配置参数也是无效的,现在可以使用更多的本地内存。

从一定程度上解决了在运行时使用反射、代理等操作生成的大量类实例的问题,从而极大的降低了触发Full GC的问题,以及降低了出现 OutOfMemoryError: PermGen 方法区内存溢出的问题。

本文主要从堆栈内存、回收器GC两方面介绍常见的JVM参数并提供配置示例。

2. 调优堆栈内存

2.1 堆栈大小典型配置参数

配置参数说明示例-Xmx设置最大堆大小。-Xmx3550m,设置JVM最大可用内存为3550 MB。-Xms设置JVM初始内存。-Xms3550m,设置JVM初始内存为3550 MB。此值建议与-Xmx相同,避免每次垃圾回收完成后JVM重新分配内存。-Xmn设置年轻代大小。-Xmn2g,设置年轻代大小为2 GB。整个JVM内存大小=年轻代大小+年老代大小+持久代大小。持久代一般固定大小为64 MB,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。-Xss设置线程的栈大小。-Xss128k,设置每个线程的栈大小为128 KB。说明:JDK 5.0版本以后每个线程栈大小为1 MB,JDK 5.0以前版本每个线程栈大小为256 KB。请依据应用的线程所需内存大小进行调整。在相同物理内存下,减小该值可以生成更多的线程。但是操作系统对一个进程内的线程个数有一定的限制,无法无限生成,一般在3000个~5000个。-XX:NewRatio=n设置年轻代和年老代的比值。-XX:NewRatio=4,设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。如果设置为4,那么年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5。-XX:SurvivorRatio=n年轻代中Eden区与两个Survivor区的比值。-XX:SurvivorRatio=4,设置年轻代中Eden区与Survivor区的大小比值。如果设置为4,那么两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6。-XX:MaxPermSize=n设置持久代大小。-XX:MaxPermSize=16m,设置持久代大小为16 MB。-XX:MaxTenuringThreshold=n设置垃圾最大年龄。-XX:MaxTenuringThreshold=0,设置垃圾最大年龄。如果设置为0,那么年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,提高了效率。如果将此值设置为较大值,那么年轻代对象会在Survivor区进行多次复制,增加了对象在年轻代的存活时间,增加在年轻代即被回收的概率。

注意:在JDK1.8以后面的版本,使用元空间来代替永久代。在 JDK1.8以及后面的版本中,如果设定参数-XX:MaxPermSize,启动JVM不会报错,但是会提示: Java Hotspot 64Bit Server VM warning:ignoring option MaxPermSize=1280m:support was removed in 8.0

3. 调优回收器GC(Garbage Collection)

3.1 吞吐量优先的GC典型配置参数

配置参数说明示例-XX:+UseParallelGC选择垃圾收集器为并行收集器。-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20,-XX:+UseParallelGC此配置仅对年轻代有效,即在示例配置下,年轻代使用并发收集,而年老代仍旧使用串行收集。-XX:ParallelGCThreads配置并行收集器的线程数,即同时多少个线程一起进行垃圾回收。说明:此值建议配置与处理器数目相等。-Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20,-XX:ParallelGCThreads=20表示配置并行收集器的线程数为20个。-XX:+UseParallelOldGC配置年老代垃圾收集方式为并行收集。说明:JDK 6.0支持对年老代并行收集。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC,-XX:+UseParallelOldGC表示对年老代进行并行收集。-XX:MaxGCPauseMillis设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100,-XX:MaxGCPauseMillis=100设置每次年轻代垃圾回收的最长时间为100 ms。-XX:+UseAdaptiveSizePolicy设置此选项后,并行收集器自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时该间或者收集频率,该值建议使用并行收集器时,并且一直打开。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy

3.2 响应时间优先的GC典型配置参数

配置参数说明示例-XX:+UseConcMarkSweepGC设置年老代为并发收集。说明:配置了-XX:+UseConcMarkSweepGC,建议年轻代大小使用-Xmn设置。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC-XX:+UseParNewGC设置年轻代为并行收集。可与CMS收集同时使用。JDK 5.0以上版本,JVM根据系统配置自行设置,无需再设置此值。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC-XX:CMSFullGCsBeforeCompaction由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection,-XX:CMSFullGCsBeforeCompaction=5,表示运行GC5次后对内存空间进行压缩、整理。-XX:+UseCMSCompactAtFullCollection打开对年老代的压缩。说明: 该值可能会影响性能,但是可以消除碎片。-Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection

3.3 用于辅助的GC典型配置参数

配置参数说明-XX:+PrintGC用于输出GC日志。-XX:+PrintGCDetails用于输出GC日志详情。-XX:+PrintGCTimeStamps用于输出GC时间戳(JVM启动到当前日期的总时长的时间戳形式)。示例如下:0.855: [GC (Allocation Failure) [PSYoungGen: 33280K->5118K(38400K)] 33280K->5663K(125952K), 0.0067629 secs] [Times: user=0.01 sys=0.01, real=0.00 secs]-XX:+PrintGCDateStamps用于输出GC时间戳(日期形式)。示例如下:2022-01-27T16:22:20.885+0800: 0.299: [GC pause (G1 Evacuation Pause) (young), 0.0036685 secs]-XX:+PrintHeapAtGC在进行GC前后打印出堆的信息。-Xloggc:…/logs/gc.log日志文件的输出路径。

← 上一篇: 你应该玩的 20 款最受欢迎的 Android 游戏(最好的)
下一篇: CF最新活动大全 →

相关推荐

你应该玩的 20 款最受欢迎的 Android 游戏(最好的)

你应该玩的 20 款最受欢迎的 Android 游戏(最好的)

您应该玩的 20 款最受欢迎的 Android 游戏(最佳) 主题涵盖 展示 您应该玩的 20 款最受欢迎的 Android 游戏(最佳) 您应该玩的 20 款最受欢迎的 An

创建隐私空间,隐藏私密数据

创建隐私空间,隐藏私密数据

创建隐私空间,隐藏私密数据 适用产品: HUAWEI MatePad Pro 5G(10.8英寸 全网通 8gb+256gb),HUAWEI MatePad Pro(11英寸 2022款 wi-fi版 手写笔套装版 8gb+256gb、10

砖头多少钱一块_普通红砖价格

砖头多少钱一块_普通红砖价格

5-6毛/块之间,价格一般看地方,混合捏练后以人工或机械压制成型,5毛/块之间,看型号。经粉碎,经粉碎,石子25元/立方。红砖还是白沙砖,

𱍁的意思,𱍁的解释,𱍁的部首

𱍁的意思,𱍁的解释,𱍁的部首

〔𱍁〕字部首是龙部,总笔画是8画。 〔𱍁〕字是上下结构,可拆字为“龙、廾”。 〔𱍁〕字仓颉码是IPT,五笔是DXYA,郑码是GME。 〔𱍁〕字

DNF:你错过了12亿金币!传说融合石换钱攻略

DNF:你错过了12亿金币!传说融合石换钱攻略

DNF:你错过了12亿金币!传说融合石换钱 不知道你有没有观察最近的拍卖行,传说融合石竟然能卖出12亿金币的天价!堪比24技攻的玉玺了,那么

新闻联播

新闻联播

微信公众号 扫码关注 小程序 扫码关注 展开 分享到: 2021-05-10日历查询 日历查询 2021年 2020年 2019年 2018年 2017年 2016年 2015年 2014年 2013年 2012年 20