JVM参数详解
2022-02-14 00:45:12 17 举报
AI智能生成
JVM参数的具体信息
作者其他创作
大纲/内容
常见参数
内存大小分布
分支主题
控制参数
-Xms设置堆的最小空间大小
-Xmx设置堆的最大空间大小
-XX:NewSize设置新生代最小空间大小
-XX:MaxNewSize设置新生代最大空间大小
-XX:PermSize设置永久代最小空间大小
-XX:MaxPermSize设置永久代最大空间大小
-Xss设置每个线程的堆栈大小
堆内存
分支主题
VM内存区域总体结构
Heap区
堆区分为Young Gen(新生代),Tenured Gen(老年代-养老区)。其中新生代又分为Eden Space(伊甸园)、Survivor Space(幸存者区)
非Heap区
Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)
常见问题
为什么要分新生代和老年代?
分代回收的优点是利用不同代的对象大小、存活时间、回收时间的不同,充分调用内存的使用率,并且降低回收内存的频率。新生代的对象一般是比较小的,存活时间较短,便于回收的对象。经历一段固定时间的运行,当内存不足的时候则对该区域进行回收运算,释放内存,然后将依旧需要存活的对象存放到老年代中,避免重复新建对象的浪费
不同代采用的算法区别?
青年代采用的是复制-清除算法
老年代采用的时候标记-清除算法
全局参数
典型配置举例
堆大小设置
JVM中最大堆大小的限制有
相关操作系统的系统模型(32位/64位)限制
系统的可用虚拟内存限制
系统可用物理内存限制
典型配置
例子1:
java -Xmx3550m -Xms3550m -Xmn2g –Xss128k
详解
-Xmx3550m
设置JVM最大可用内存位3550M
-Xms3550m
设置JVM初始内存为3550M
这个值和-Xmx相同,以避免每次回收完成后JVM重新分配内存
-Xmn2g
设置青年代的内存为2G
–Xss128k
设置每个线程的堆栈大小
例子2:
java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0
详解
-XX:NewRatio=4:
设置青年代与老年代的比值,4代表青年代与老年代的空间占比是1:4
-XX:SurvivorRatio=4:
设置年轻代中 Eden 区与 Survivor 区的大小比值。设置为 4,则两个 Survivor 区与一个 Eden 区的比值为 2:4
-XX:MaxPermSize=16m:
设置持久代的大小为16M
-XX:MaxTenuringThreshold=0:
设置垃圾最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。
回收器选择
串行收集器
并行收集器
并发收集器
响应时间优先的并发收集器
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
设置年老代为并发收集
-XX:+UseParNewGC
设置年轻代为并行收集
辅助信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps -XX:+PrintGC
-XX:+PrintGCApplicationConcurrentTime
-XX:+PrintGCApplicationStoppedTime
-XX:PrintHeapAtGC
-Xloggc:filename
常见配置汇总
堆设置
分支主题
收集器设置
分支主题
垃圾回收统计信息
分支主题
并行收集器
分支主题
并发收集器
分支主题
优化手段
架构调优
代码调优
算法和数据结构的灵活应用
JVM调优
垃圾收集器
内存分配
数据库调优
表结构优化
sql优化
操作系统调优
0 条评论
下一页