自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

4G的機(jī)器上申請(qǐng)8G的內(nèi)存,是否可以成功?

開發(fā) 前端
在系統(tǒng)的物理內(nèi)存不夠用的時(shí)候,把硬盤內(nèi)存中的一部分空間釋放出來,以供當(dāng)前運(yùn)行的程序使用。那些被釋放的空間可能來自一些很長(zhǎng)時(shí)間沒有什么操作的程序,這些被釋放的空間被臨時(shí)保存到Swap分區(qū)中,等到那些程序要運(yùn)行時(shí),再從Swap分區(qū)中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。
前言

4G的機(jī)器上申請(qǐng)8G的內(nèi)存,是否可以成功?這個(gè)問題沒有辦法,是沒有辦法進(jìn)行回答,這個(gè)問題要考慮三個(gè)前置條件:

操作系統(tǒng)是 32 位的,還是 64 位的?

申請(qǐng)完 8G 內(nèi)存后會(huì)不會(huì)被使用?

操作系統(tǒng)有沒有使用 Swap 機(jī)制?

先在這說一下結(jié)論:

  • 在 32 位操作系統(tǒng),因?yàn)檫M(jìn)程最大只能申請(qǐng) 3 GB 大小的虛擬內(nèi)存,所以直接申請(qǐng) 8G 內(nèi)存,會(huì)申請(qǐng)失敗。
  • 在 64 位操作系統(tǒng),因?yàn)檫M(jìn)程最大只能申請(qǐng) 128 TB 大小的虛擬內(nèi)存,即使物理內(nèi)存只有 4GB,申請(qǐng) 8G 內(nèi)存也是沒問題,因?yàn)樯暾?qǐng)的內(nèi)存是虛擬內(nèi)存。如果這塊虛擬內(nèi)存被訪問了,要看系統(tǒng)有沒有 Swap 分區(qū):

如果沒有 Swap 分區(qū),因?yàn)槲锢砜臻g不夠,進(jìn)程會(huì)被操作系統(tǒng)殺掉,原因是 OOM(內(nèi)存溢出);

如果有 Swap 分區(qū),即使物理內(nèi)存只有 4GB,程序也能正常使用 8GB 的內(nèi)存,進(jìn)程可以正常運(yùn)行;

操作系統(tǒng)是 32 位的,還是 64 位的?

為什么要考慮操作系統(tǒng)是 32 位的,還是 64 位的這個(gè)前置條件呢?

我們先來回顧一下之前學(xué)習(xí)的虛擬內(nèi)存的大小的知識(shí)

應(yīng)用程序通過 malloc 函數(shù)申請(qǐng)內(nèi)存的時(shí)候,實(shí)際上申請(qǐng)的是虛擬內(nèi)存,此時(shí)并不會(huì)分配物理內(nèi)存。

當(dāng)應(yīng)用程序讀寫了這塊虛擬內(nèi)存,CPU 就會(huì)去訪問這個(gè)虛擬內(nèi)存, 這時(shí)會(huì)發(fā)現(xiàn)這個(gè)虛擬內(nèi)存沒有映射到物理內(nèi)存, CPU 就會(huì)產(chǎn)生缺頁中斷,進(jìn)程會(huì)從用戶態(tài)切換到內(nèi)核態(tài),并將缺頁中斷交給內(nèi)核的 Page Fault Handler (缺頁中斷函數(shù))處理。

缺頁中斷處理函數(shù)會(huì)看是否有空閑的物理內(nèi)存:

  • 如果有,就直接分配物理內(nèi)存,并建立虛擬內(nèi)存與物理內(nèi)存之間的映射關(guān)系。
  • 如果沒有空閑的物理內(nèi)存,那么內(nèi)核就會(huì)開始進(jìn)行回收內(nèi)存的工作,如果回收內(nèi)存工作結(jié)束后,空閑的物理內(nèi)存仍然無法滿足此次物理內(nèi)存的申請(qǐng),那么內(nèi)核就會(huì)觸發(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)的場(chǎng)景

因?yàn)?32 位操作系統(tǒng),進(jìn)程最多只能申請(qǐng) 3 GB 大小的虛擬內(nèi)存空間,所以進(jìn)程申請(qǐng) 8GB 內(nèi)存的話,在申請(qǐng)?zhí)摂M內(nèi)存階段就會(huì)失敗。

64 位系統(tǒng)的場(chǎng)景

64 位操作系統(tǒng),進(jìn)程可以使用 128 TB 大小的虛擬內(nèi)存空間,所以進(jìn)程申請(qǐng) 8GB 內(nèi)存是沒問題的,因?yàn)檫M(jìn)程申請(qǐng)內(nèi)存是申請(qǐng)?zhí)摂M內(nèi)存,只要不讀寫這個(gè)虛擬內(nèi)存,操作系統(tǒng)就不會(huì)分配物理內(nèi)存。

注意:即使 malloc 申請(qǐng)的是虛擬內(nèi)存,只要不去訪問就不會(huì)映射到物理內(nèi)存,但是申請(qǐng)?zhí)摂M內(nèi)存的過程中,還是使用到了物理內(nèi)存(比如內(nèi)核保存虛擬內(nèi)存的數(shù)據(jù)結(jié)構(gòu),也是占用物理內(nèi)存的),如果你的主機(jī)是只有 2GB 的物理內(nèi)存的話,大概率會(huì)觸發(fā) OOM。

申請(qǐng)后的8G內(nèi)存是否真的被使用

如果沒有被使用,就不用分配物理內(nèi)存,所以64系統(tǒng)的前提下:一定是可以成功的沒有任何問題。

操作系統(tǒng)有沒有使用 Swap 機(jī)制?

如果申請(qǐng)的內(nèi)存被使用了,也就意味著要進(jìn)行物理內(nèi)存的分配了,這個(gè)時(shí)候就要考慮是否開啟了Swap機(jī)制。

Swap機(jī)制

在系統(tǒng)的物理內(nèi)存不夠用的時(shí)候,把硬盤內(nèi)存中的一部分空間釋放出來,以供當(dāng)前運(yùn)行的程序使用。那些被釋放的空間可能來自一些很長(zhǎng)時(shí)間沒有什么操作的程序,這些被釋放的空間被臨時(shí)保存到Swap分區(qū)中,等到那些程序要運(yùn)行時(shí),再從Swap分區(qū)中恢復(fù)保存的數(shù)據(jù)到內(nèi)存中。

使用 Swap 機(jī)制優(yōu)點(diǎn)是,應(yīng)用程序?qū)嶋H可以使用的內(nèi)存空間將遠(yuǎn)遠(yuǎn)超過系統(tǒng)的物理內(nèi)存。由于硬盤空間的價(jià)格遠(yuǎn)比內(nèi)存要低,因此這種方式無疑是經(jīng)濟(jì)實(shí)惠的。當(dāng)然,頻繁地讀寫硬盤,會(huì)顯著降低操作系統(tǒng)的運(yùn)行速率,這也是 Swap 的弊端。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-06-07 19:51:21

CPU函數(shù)內(nèi)存

2013-12-02 14:15:35

4G移動(dòng)

2022-07-28 00:25:22

5G4G速度

2021-01-10 21:13:21

4G5GLTE技術(shù)

2022-08-03 15:17:07

5G4GLTE

2021-07-17 22:46:06

4G5G網(wǎng)絡(luò)

2017-08-01 08:28:46

4G服務(wù)器MySQL

2013-12-05 09:20:58

中移動(dòng)4G牌照4G網(wǎng)絡(luò)

2013-12-17 09:52:55

4G移動(dòng)互聯(lián)網(wǎng)

2014-03-10 16:00:58

4G網(wǎng)絡(luò)藍(lán)汛

2021-05-10 10:16:03

5G4G網(wǎng)絡(luò)

2011-05-06 16:47:06

筆記本Alienware M

2020-03-12 08:23:53

5G速度4G

2013-01-30 09:25:21

4G通信網(wǎng)絡(luò)LTE

2009-06-09 10:34:41

802.16mLTE4G

2011-10-19 08:08:20

LTE

2017-12-26 14:56:44

虛擬化基礎(chǔ)知識(shí)

2011-05-04 09:12:43

筆記本Alienware M

2023-03-07 21:41:23

JVM內(nèi)存服務(wù)器

2017-10-27 14:32:53

內(nèi)存存儲(chǔ)暴漲
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)