允许使用Max Heap内存单个进程用于给定的ram大小?

时间:2012-04-24 08:27:52

标签: java jvm heap-memory

堆是RAM的一部分。但仍有一个限制,我们无法定义堆大小超过一定百分比的RAM。例如: - 我有32位winodws xp操作系统和4       GB RAM。但我不能声明堆大小超过1600 MB。 我的问题在这里为什么我们不能将堆大小声明为某个大值说3GB哪个       低于我的4GB RAM(32位可以使用高达4GB的RAM)?这适用于单个流程。

我的意思是我可以启动两个tomcat或任何其他java进程       为每个进程分配1600MB的堆大小但是我不能为单个进程分配3200MB。这背后的原因是什么?

2 个答案:

答案 0 :(得分:1)

32位窗口只允许2GB的地址空间到一个进程(没有启用特殊扩展。)操作系统为自己保留另外2GB。然后,最重要的是Heap并不是JVM需要的所有内存。有permgen空间,以及JVM自身代码使用的内存。

答案 1 :(得分:0)

如果不能分配64位4GB。