摘要:一、根据程序的运行状况查看其活跃的数据量①、活跃的数据:1.应用程序运行于稳定状态时,老年代占用的java堆大小2.应用程序运行于稳定状态时,永久代占用的java堆大小其实就是FullGc后这2个数据的大小②、动手测试:1.测试代码:publicclassA{int[]storage=newint[102400];int[]extra=newint[200000];publicint[]execute(){try{Thread.sleep(10);}catch(Interru
一、根据程序的运行状况查看其活跃的数据量
①、活跃的数据:
1.应用程序运行于稳定状态时,老年代占用的java堆大小
2.应用程序运行于稳定状态时,永久代占用的java堆大小
其实就是FullGc后这2个数据的大小
②、动手测试:
1.测试代码:
public class A {
int[] storage = new int[102400];
int[] extra = new int[200000];
public int[] execute() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
return storage;
}
}
import java.util.LinkedList;
import java.util.Queue;
public class Test {
public static void main(String[] args) {
Queue<int[]> queue = new LinkedList<int[]>();
while (true) {
int[] tmp=new A().execute();
if (queue.size() > 1000) {
queue.poll();
} else {
queue.offer(tmp);
}
}
}
}
2.参数配置:
3.测试的结果
4.结果分析
可以看到老年代的大小为404211K,持久代的大小为8888K
二、通过活跃的数据配置堆以及其他参数
通用法则1:
将java堆的初始值-Xms和最大值-Xmx设置为老年代活跃数据大小的3~4倍
所以此处就设置 -Xms1600m,-Xmx1600m
在以上的测试结果中可以看到原始的堆大小为1675m左右,是比较接近的。
通用法则2:
永久带的初始值-XX:PermSize及最大值-XX:MaxPermSize应该比永久代活跃数据大1.2~1.5倍
所以此处就设置-XX:PermSize=13m,-XX:MaxPermSize=13m
补充法则:
新生代空间应该为老年代空间活跃数据的1~1.5倍
此处老年代为400m,新生代就为600m
如果java堆的初始值及最大值为活跃数据的3~4倍,新生代为活跃数据的1~1.5倍时,老年代应设置为活跃数据大小的2~3倍
相关推荐
自己学习总结JVM垃圾回收机制的结构图,一起分享!!!
JVM垃圾回收器和内存分配策略
jdk工具介绍JVM垃圾回收23种设计模式 jdk工具介绍JVM垃圾回收23种设计模式 jdk工具介绍JVM垃圾回收23种设计模式
Jvm垃圾回收机制 by linux_14胡嘉辉1.如何确定某个对象是“垃圾”? 2.典型的垃圾收集算法3.典型的垃圾收集器
java jvm垃圾回收
JVM垃圾回收整理。。。
JVM垃圾回收器和内存分配策略
垃圾回收系列(3):CLR与JVM垃圾回收器的比较扫描.pdf
JVM垃圾回收艺术,以人的成长过程来描述JVM GC
全面概述jvm垃圾回收机制的功能、各部分组成及各部分算法实现
JVM 垃圾回收(GC)
jvm垃圾回收机制总结
jvm 垃圾回收思维导图,总结了现有的垃圾回收器的有点以及使用场景、垃圾回收算法以及回收的判断依据。
JVM垃圾回收实战.pdf
深入探索JVM垃圾回收:ARM服务器垃圾回收的挑战和优化.docx
jvm垃圾回收调整.pdf
JVM垃圾回收器工作原理及使用实例介绍Java开发Java经验技巧共15页.pdf.zip
你对JVM内存组成结构和JVM垃圾回收机制是否熟悉,这里和大家简单分享一下,希望对你的学习有所帮助,首先来看一下JVM内存结构,它是由堆、栈、本地方法栈、方法区等部分组成,结构图如下所示。
JVM垃圾回收分享(文字在博客)