在大多数32位机、Sun的JVM上,Java的堆空间默认的大小为128MB,但也有例外,例如在32未Solaris *** 作系统(SPARC平台版本)上,默认的最大堆空间和起始堆空间大小为-Xms=3670K和-Xmx=64M。对于64位 *** 作系统,一般堆空间大小增加约30%。但你使用Java1.5的throughput垃圾回收器,默认最大的堆大小为物理内存的四分之一,而起始堆大小为物理内存的十六分之一。要想知道默认的堆大小的方法,可以用默认的设置参数打开一个程序,使用JConsole(JDK1.5之后都支持)来查看,在VMSummary页面可以看到最大的堆大小。
用这种方法你可以根据你的程序的需要来改变堆内存大小,我强烈建议采用这种方法而不是默认值。如果你的程序很大,有很多对象需要被创建的话,你可以用-Xmsand-Xmx这两个参数来改变堆内存的大小。Xms表示起始的堆内存大小,Xmx表示最大的堆内存的大小。另外有一个参数-Xmn,它表示newgeneration(后面会提到)的大小。霍营电脑培训认为有一件事你需要注意,你不能任意改变堆内存的大小,你只能在启动JVM时设定它。
虚拟机的堆大小设置不属于java标准选项,也就是说实现一个java虚拟机,不一定要支持这个功能。不过流行的发行版都是实现了这个选项,输入java -X,会输出有哪些非标准选项被支持。
单独输入这个选项(-Xms),是不能工作的,缺少必要的class参数,请注意提示的用法那一段中,非中括号的部分,那些是必选的。
正确用法:
java -Xss64m Test
Test是class的名字
Thread(ThreadGroup group, Runnable target, String name, long stackSize)分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈大小。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)