- java gc
Eden区是连续的空间,且Survivor总有一个为空。经过一次GC和复制,一个Survivor中保存着当前还活着的对象,而Eden区和另一个Survivor区的内容都不再需要了,可以直接清空,到下一次GC时,两个Survivor的角色再互换。
- JVM参数
JVM选项含义
-Xms 初始Heap大小
-Xmx Java Heap最大值
-Xmn Young Generation的Heap大小
-Xss 每个线程的Stack大小
-XX:+<option> 启用选项 -XX:-<option> 不启用选项
-XX:SurvivorRatio参数来配置Eden区域Survivor区的容量比值,默认是8,代表Eden:Survivor1:Survivor2=8:1:1
-XX:MaxTenuringThreshold控制,大于该值进入老年代,但这只是个最大值,并不代表一定是这个值
-XX:+UseAdaptiveSizePolicy开关来控制是否采用动态控制策略
-XX:PretenureSizeThreshold来控制直接升入老年代的对象大小,大于这个值的对象会直接分配在老年代上
-XX:+HandlePromotionFailure(允许担保失败),如果允许,则只会进行MinorGC,此时可以容忍内存分配失败;如果不允许,则仍然进行Full GC
- kafka jvm参数示例
java -server -Xms3072m -Xmx3072m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSConcurrentMTEnabled -XX:+CMSScavengeBeforeRemark -XX:CMSInitiatingOccupancyFraction=30 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -Xloggc:logs/gc.log -Djava.awt.headless=true -Dcom.sun.management.jmxremote -classpath <long list of jars> the.actual.Class
XX:+UseCMSInitiatingOccupancyOnly: 指示只有在old generation在使用了初始化的比例后启动cms gc
XX:+CMSConcurrentMTEnabled: allows CMS to use multiple cores for concurrent phase
XX:+CMSScavengeBeforeRemark: 在执行CMS remark之前进行一次youngGC,这样能有效降低remark的时间
XX:CMSInitiatingOccupancyFraction=n 指示在old generation在使用了n%的后,触发cms gc
XX:+PrintTenuringDistribution: 任期阀值的分布和对象岁数的分布
-Djava.awt.headless=true
‑XX:+CMSConcurrentMTEnabled – allows CMS to use multiple cores for concurrent phase.
‑XX:+ConcGCThreads= – specifies number of thread for concurrent phases.
‑XX:+ParallelGCThreads= – specifies number of thread for parallel work during stop-the-world pauses (by default it equals to number of physical cores).
-XX:CMSWaitDuration –设置收集暂停的最大间隔时间,越大你的应用将被暂停,类似死机没有反应
-XX:+CMSScavengeBeforeRemark 可以避免在收集期间同时扫描。
-D<name>=<value> set a system property设置一个系统参数和值
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$logpath/gc.$START_TIME.log \
-XX:NewSize=256m -XX:MaxNewSize=256m \
-XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC \
-XX:NewSize=256m -XX:MaxNewSize=256m \
-XX:+UseParNewGC \
-XX:+UseConcMarkSweepGC \
-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
java永久生成对象:Permanate generation
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
Linux下处理图片时需加上参数“-Djava.awt.headless=true”