簡體   English   中英

給定的RAM大小允許使用最大堆內存單個進程?

[英]Max Heap memory single process allowed to use for a given ram size?

堆是RAM的一部分,但是仍然存在一個限制,即我們無法定義超出RAM一定百分比的堆大小。例如:-我有32位winodws xp OS和4 GB RAM。 但是我不能聲明堆大小超過1600 MB。 我的問題在這里,為什么我們不能將堆大小聲明為一個較大的值,例如3GB低於我的4GB RAM(因為32位可以使用高達4gb的RAM)? 這對於單個過程是正確的。

我的意思是我可以啟動兩個tomcat或任何其他Java進程,為每個進程分配1600MB的堆大小,但我不能為單個進程分配3200MB的內存。其背后的原因是什么?

32位窗口僅允許2GB的地址空間用於單個進程(未啟用特殊擴展名。)操作系統將其他2GB的空間保留給自己。 然后,在此堆之上,並不是JVM需要的所有內存。 有永久性空間,還有JVM本身的代碼使用的內存。

如果不是64位,則無法分配4GB。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM