最近在用IDEA做JavaEE專案,tomcat和JDK采用32位啟動除錯時報錯,記憶體不足,但我的機器有8G記憶體,用了4G不到,win7X64的系統。后來感覺是不是32位的tomcat和JDK不能使用4G以上的記憶體地址,于是換成64位的tomcat和JDK后OK了。
由于對于作業系統記憶體管理了解不是很透,請高手進來解答一下。
是否32位應用程式只能使用某個地址以下的記憶體,如果這部分記憶體被其它行程占用就無法申請到更高的地址空間,這個值是多少?還有就是32位應用對虛擬記憶體的訪問是不是也有相同的問題?
uj5u.com熱心網友回復:
32位還想用4G以上的記憶體????uj5u.com熱心網友回復:
AWE (Address Windowing Extensions)https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms189334(v=sql.105)
uj5u.com熱心網友回復:
32位程式的尋址能力是2^32,也就是4G。對于32位程式只能申請到4G的記憶體uj5u.com熱心網友回復:
我覺得應該是tomcat設定 的問題,java虛擬機有自己的gc策略,在配置tomcat,weblogic等中間件的時候需要指定一些閾值告訴虛擬機什么時候該回收記憶體了。你可以看看tomcat的日志 看報錯時是不是超過4g了來判斷是否是32位64位的問題uj5u.com熱心網友回復:
那舉個例子,是不是可以說剛開機時我用32位應用是可以的,但當我運行了大程式后,再開其它32位應用就不行了呢?好像也沒出過什么問題啊?uj5u.com熱心網友回復:
32位的邏輯地址的最大訪問范圍小于4G,原理上說,只要你的使用空間(程式+資料)要求不超過4G,就不會有問題,硬體系統的映射機制可以將任意記憶體映射為線性的邏輯空間uj5u.com熱心網友回復:
在你的應用中,虛擬機+支持+你的程式+其他可能必須的空間要求,在32位下,合計不能超過4G轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/37074.html
標籤:進程/線程/DLL
