2023-08-28 10:25:26來源:今日頭條
4G的機器上申請8G的內(nèi)存,是否可以成功?這個問題沒有辦法,是沒有辦法進行回答,這個問題要考慮三個前置條件:
(資料圖片僅供參考)
操作系統(tǒng)是 32 位的,還是 64 位的?
申請完 8G 內(nèi)存后會不會被使用?
操作系統(tǒng)有沒有使用 Swap 機制?
先在這說一下結論:
在 32 位操作系統(tǒng),因為進程最大只能申請 3 GB 大小的虛擬內(nèi)存,所以直接申請 8G 內(nèi)存,會申請失敗。在 64 位操作系統(tǒng),因為進程最大只能申請 128 TB 大小的虛擬內(nèi)存,即使物理內(nèi)存只有 4GB,申請 8G 內(nèi)存也是沒問題,因為申請的內(nèi)存是虛擬內(nèi)存。如果這塊虛擬內(nèi)存被訪問了,要看系統(tǒng)有沒有 Swap 分區(qū):如果沒有 Swap 分區(qū),因為物理空間不夠,進程會被操作系統(tǒng)殺掉,原因是 OOM(內(nèi)存溢出);
如果有 Swap 分區(qū),即使物理內(nèi)存只有 4GB,程序也能正常使用 8GB 的內(nèi)存,進程可以正常運行;
操作系統(tǒng)是 32 位的,還是 64 位的?為什么要考慮操作系統(tǒng)是 32 位的,還是 64 位的這個前置條件呢?
我們先來回顧一下之前學習的虛擬內(nèi)存的大小的知識
應用程序通過 malloc 函數(shù)申請內(nèi)存的時候,實際上申請的是虛擬內(nèi)存,此時并不會分配物理內(nèi)存。
當應用程序讀寫了這塊虛擬內(nèi)存,CPU 就會去訪問這個虛擬內(nèi)存, 這時會發(fā)現(xiàn)這個虛擬內(nèi)存沒有映射到物理內(nèi)存, CPU 就會產(chǎn)生缺頁中斷,進程會從用戶態(tài)切換到內(nèi)核態(tài),并將缺頁中斷交給內(nèi)核的 Page Fault Handler (缺頁中斷函數(shù))處理。
缺頁中斷處理函數(shù)會看是否有空閑的物理內(nèi)存:
如果有,就直接分配物理內(nèi)存,并建立虛擬內(nèi)存與物理內(nèi)存之間的映射關系。如果沒有空閑的物理內(nèi)存,那么內(nèi)核就會開始進行回收內(nèi)存的工作,如果回收內(nèi)存工作結束后,空閑的物理內(nèi)存仍然無法滿足此次物理內(nèi)存的申請,那么內(nèi)核就會觸發(fā) OOM 。32 位操作系統(tǒng)和 64 位操作系統(tǒng)的虛擬地址空間大小是不同的,在 Linux 操作系統(tǒng)中,虛擬地址空間的內(nèi)部又被分為內(nèi)核空間和用戶空間兩部分,如下所示:
通過這里可以看出:
32 位系統(tǒng)的內(nèi)核空間占用 1G,剩下的 3G 是用戶空間;64 位系統(tǒng)的內(nèi)核空間和用戶空間都是 128T,剩下的中間部分是未定義的。32 位系統(tǒng)的場景因為 32 位操作系統(tǒng),進程最多只能申請 3 GB 大小的虛擬內(nèi)存空間,所以進程申請 8GB 內(nèi)存的話,在申請?zhí)摂M內(nèi)存階段就會失敗。
64 位系統(tǒng)的場景64 位操作系統(tǒng),進程可以使用 128 TB 大小的虛擬內(nèi)存空間,所以進程申請 8GB 內(nèi)存是沒問題的,因為進程申請內(nèi)存是申請?zhí)摂M內(nèi)存,只要不讀寫這個虛擬內(nèi)存,操作系統(tǒng)就不會分配物理內(nèi)存。
注意:即使 malloc 申請的是虛擬內(nèi)存,只要不去訪問就不會映射到物理內(nèi)存,但是申請?zhí)摂M內(nèi)存的過程中,還是使用到了物理內(nèi)存(比如內(nèi)核保存虛擬內(nèi)存的數(shù)據(jù)結構,也是占用物理內(nèi)存的),如果你的主機是只有 2GB 的物理內(nèi)存的話,大概率會觸發(fā) OOM。
申請后的8G內(nèi)存是否真的被使用如果沒有被使用,就不用分配物理內(nèi)存,所以64系統(tǒng)的前提下:一定是可以成功的沒有任何問題。
操作系統(tǒng)有沒有使用 Swap 機制?如果申請的內(nèi)存被使用了,也就意味著要進行物理內(nèi)存的分配了,這個時候就要考慮是否開啟了Swap機制。
Swap機制在系統(tǒng)的物理內(nèi)存不夠用的時候,把硬盤內(nèi)存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什么操作的程序,這些被釋放的空間被臨時保存到Swap分區(qū)中,等到那些程序要運行時,再從Swap分區(qū)中恢復保存的數(shù)據(jù)到內(nèi)存中。
使用 Swap 機制優(yōu)點是,應用程序實際可以使用的內(nèi)存空間將遠遠超過系統(tǒng)的物理內(nèi)存。由于硬盤空間的價格遠比內(nèi)存要低,因此這種方式無疑是經(jīng)濟實惠的。當然,頻繁地讀寫硬盤,會顯著降低操作系統(tǒng)的運行速率,這也是 Swap 的弊端。
關鍵詞:
前言4G的機器上申請8G的內(nèi)存,是否可以成功?這個問題沒有辦法,是沒有
VisualStudioCode是一款功能強大、可擴展且輕量級的代碼編輯器,經(jīng)過多
數(shù)據(jù)寶統(tǒng)計,截至8月25日收盤,滬深兩市共有59只個股連續(xù)5日或5日以上
河北遵化:精心準備迎開學
北京時間8月28日西甲聯(lián)賽第3輪,畢爾巴鄂競技主場對陣皇家貝蒂斯。畢爾
您好,現(xiàn)在漢格來為大家解答以上的問題。少年的繁體字圖片,少年的繁體
我是小前,我來為大家解答以上問題。diy小屋怎么自己制作房間,diy小屋
東方網(wǎng)記者包永婷8月27日報道:8月27日,上海大劇院迎來開業(yè)25周年。由
很多人對倒錯的歸結密室溺亡,倒錯的歸結不是很了解那具體是什么情況呢
C視覺攝影師周琦登臨龍泉山,猶如站在成都這座山水立體城市的觀景臺。
英國建議G7邀請中國參會,日本氣得直跳腳,六國獲中方同意入群,美國,中
大家好,今日關于【越吃越瘦的蔬菜7個讓人發(fā)胖的飲食習慣】迅速上了的
邯鄲小孩子好玩的地方有很多哦!首先,你可以去邯鄲的游樂園玩耍。那里
2023男籃世界杯如約而至,中國男籃于北京時間8月26日將打響小組賽的首
曼聯(lián)3分47秒就0-2落后,創(chuàng)球隊在英超比賽中最早落后2球紀錄,英超,曼聯(lián),