2011-04-15 40 views
6

java很高兴地接受-Xmx1k作为参数,但“实验表明”这仍然像8MB堆一样。您可以制作(Oracle JVM)Java堆的最小数量是多少?

谷歌没有提供任何使用,所以我想知道,什么是你可以在Java中要求的最小堆大小?

感谢, 埃里克

编辑:

这似乎会略有不同的平台和Java版本。我的Mac上使用1.6.0_24,我可以配置它没有错误,最小的是:

$ java -Xms1k -Xmx4097k -XX:NewSize=192k -cp . Foo 
5636096 

或约5.375M,其中Foo.java就是:

public class Foo { 
    public static void main(String[] args) { 
     System.out.println(Runtime.getRuntime().totalMemory()); 
    } 
} 

我的环境是这样的:

$ uname -a 
Darwin turbo.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386 
$ java -version 
java version "1.6.0_24" 
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326) 
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode) 

正如我在下面的评论中提到,我设置一个小堆试图验证一个昂贵的算法确实使用几乎没有记忆,而不是为了省钱。

感谢您的回答 - 当我尝试谷歌这一点时,我很沮丧地出现了一些有用的东西。

+0

我从来没有见过它设置小于32MB,那在日子里。我从来没有试图找出最低限度。 – lobster1234 2011-04-15 07:09:28

回答

2

除非你是工作在极其有限的移动设备上(在这种情况下,你应该做你该设备上测试)甚至8MB不多

服务器的成本约为$ 70/GB或每8约50美分MB。

与选项-mx1m -XX:NewSize=256k运行以下

System.out.println(Runtime.getRuntime().totalMemory()/1024); 

打印

2304 

是2.25 MB。

别忘了,堆不是整个应用程序。你有permgen和共享库,包括在总大小。

+0

我实际上并不担心金钱,我只是在测试一种算法,我确定它很沉重在速度与空间折衷的速度方面,所以我试图将最大堆大小设置得尽可能低以确认它仍然有效。但是,当然要问JVM有多少内存是要走的路,谢谢。 – 2011-04-15 08:55:29

+0

@Peter Lawrey:每件70美元/ GB?你在谈论购买ECC内存的价格吗?你是否考虑到了公羊的能量消耗?它是每月吗?每年?这真的是一个奇怪的陈述,我认为,我真的不明白价格如何与问的问题:)(诚实的评论:) – SyntaxT3rr0r 2011-04-15 10:26:29

+0

@ SyntaxT3rr0r,除非你有一个你不需要担心8 MB的内存非常有限的系统。内存的成本非常小。内存是可重用的,但你的时间不是。 “70美元/ GB”的意思是每GB 70美元。您可以购买价格约为560美元的8 GB的名称服务器服务器,以及约7万美元的价格购买1 TB服务器的服务器,与现在使用的服务器具有大致相同的功耗。 – 2011-04-15 10:46:48

2

不,它“不高兴”地接受它。

[email protected]:~/NetBeansProjects$ /usr/local/jdk1.6.0_20/bin/java -Xmx1k 
Error occurred during initialization of VM 
Too small initial heap 

这是Oracle JVM 1.6.0_20

我的 “实验” 表明,任何低于-Xmx5M为您提供了错误。

编辑:我试验更多... -Xmx4100k似乎飞。

+0

尝试将NewSize减小为512k;;) – 2011-04-15 07:14:09

+0

$ java -Xmx1k -cp。 Foo hello,world ebowman @ turbo 09:52:28 15/04〜/ src/logic $ java -version java版本“1.6.0_24” Java(TM)SE运行环境(build 1.6.0_24-b07 -334-10M3326) Java HotSpot™64位服务器虚拟机(构建19.1-b02-334,混合模式) – 2011-04-15 08:53:24

相关问题