部分参数:
-Xmx:最大堆大小(最大值)
-Xms:初始堆大小(最小值)
-Xmn:年轻代大小
-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值
JVM内存结构:
Java中的堆是用来存储对象本身的以及数组(当然,数组引用是存放在Java栈中的)。只不过和C语言中的不同,在Java中,程序员基本不用去关心空间释放的问题,Java的垃圾回收机制会自动进行处理。因此这部分空间也是Java垃圾收集器管理的主要区域。另外,堆是被所有线程共享的,在JVM中只有一个堆。
方法区又被成为永久代(HotSpot虚拟机的设计团队选择把GC分代收集扩展至方法区),同样也是被所有的线程共享的。该区域中主要保存类的信息、静态变量、常量和即时编译器编译后的代码等数据。
java栈是线程私有的内存区域,其中存储的是栈帧。对于一个java的方法,其开始调用,则会创建一个栈帧,保存到java栈中;当该方法执行完成,则对应的是出栈的过程。每个栈帧中,保存执行对应方法所必须的信息,主要包含局部变量表,操作栈,动态连接和方法出口等信息。