大家都知道当Java程序开始运行时,JVM会从操作系统获取一些内存。JVM使用这些内存,这些内存的一部分就是堆内存。堆内存通常在存储地址的底层,向上排列。当一个对象通过new关键字或通过其他方式创建后,对象从堆中获得内存。当对象不再使用了,被当做垃圾回收掉后,这些内存又重新回到堆内存中。可是哪位高手可不可以告诉我如何增加Java堆空间?这个问题我私下里问过很多人,包括我大学的老师,可是他们给我的答案很模糊。比如在大多数32位机、Sun的JVM上,Java的堆空间默认的大小为128MB,但也有例外,例如在32未Solaris操作系统(SPARC平台版本)上,默认的最大堆空间和起始堆空间大小为 -Xms=3670K 和 -Xmx=64M。对于64位操作系统,一般堆空间大小增加约30%。但如果你使用Java 1.5的throughput垃圾回收器,默认最大的堆大小为物理内存的四分之一,而起始堆大小为物理内存的十六分之一!这个时候问题就来了,如果我的程序很大,有很多对象需要被创建的话,怎么才能增加Java堆空间而不是默认的值?
这个问题困扰我很久了,求高手帮忙解决,最好说的详细些,或者给出可行的方法,多谢! |