堆是 RAM 的一部分。但是仍然有一个限制,我们不能定义超出 RAM 的某个百分比的堆大小。例如:- 我有 32 位 winodws xp 操作系统和 4 GB RAM。但我不能声明堆大小超过 1600 MB。我在这里的问题是为什么我们不能将堆大小声明为某个比我的 4GB RAM 低的大值,比如 3GB(因为在 32 位中最多可以使用 4gb 的 RAM)?这适用于单个进程。
我的意思是我可以启动两个 tomcat 或任何其他 java 进程,为每个进程分配 1600MB 堆大小,但我不能为单个进程分配 3200MB。这背后的原因是什么?