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