首页 > JAVA > 玩转JVM 内存参数

玩转JVM 内存参数

2009年12月26日 admin 发表评论 阅读评论

-Xms 最小堆的大小, 也就是当你的虚拟机启动后, 就会分配这么大的堆内存给你

-Xmx 是最大堆的大小

-Xmn设置新生代的大小

整个JVM内存大小=新生代大小 + 老生代大小 + 永生代大小。老生代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

样例配置

JAVA_OPTS=”${JAVA_OPTS} -Xms512m -Xmx1536m -XX:MaxPermSize=256m”

从程序中也可以获取部分的JVM 内存参数

public class GetHeapSize {
	public static void main(String[] args) {

		// Get the jvm heap size.
		Runtime runtime = Runtime.getRuntime();

		long heapSize = runtime.totalMemory()/1024/1024;

		// Print the jvm heap size.
		long maxMemory = runtime.maxMemory()/1024/1024;
		System.out.println("Heap Size = " + heapSize+", maxMemory="+maxMemory);
	}
}
 
java -Xms64m -Xmx256m -Xmn16m com.danieljourney.GetHeapSize
输出 Heap Size = 62, maxMemory=254
java -Xms256m -Xmx256m -Xmn256m com.danieljourney.GetHeapSize
输出 Heap Size = 254, maxMemory=254
 

-Xss设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

-XX:NewRatio=n设置新生代和老生代的比值。如:为3,表示新生代与老生代比值为1:3,新生代占整个老生代老生代和的1/4。

-XX:SurvivorRatio=n:新生代中Eden区与两个Survivor区的比值,注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5。

-XX:MaxPermSize=n:设置永生代大小。

JAVA_OPTS=”${JAVA_OPTS} -Xms512m -Xmx1536m -XX:MaxPermSize=256m”

参考资料

转载:Java 6 JVM参数选项大全(中文版)

Java内存管理系列文章

分类: JAVA 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.