更新時(shí)間:2021-08-23 11:01:48 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2655次
1.Linux中進(jìn)程空間的分配情況如下:

從上圖可以看出,進(jìn)程的空間分配:與進(jìn)程相關(guān)的數(shù)據(jù)結(jié)構(gòu)(頁(yè)表、內(nèi)核棧、task) ---> 物理內(nèi)存 ---> 內(nèi)核代碼和數(shù)據(jù) ---> 用戶棧 ---> 共享庫(kù)的內(nèi)存映射區(qū) ---> 運(yùn)行時(shí)堆 --->未初始化數(shù)據(jù)段.bss ---> 已初始化數(shù)據(jù)段.data ---> 代碼段.text
32位Windows,一個(gè)進(jìn)程棧的默認(rèn)大小是1M,在vs的編譯屬性可以修改程序運(yùn)行時(shí)進(jìn)程的棧大小。
Linux下進(jìn)程棧的默認(rèn)大小是10M,可以通過(guò) ulimit -s查看并修改默認(rèn)棧大小。
默認(rèn)一個(gè)線程要預(yù)留1M左右的棧大小,所以進(jìn)程中有N個(gè)線程時(shí),Windows下大概有N*M的棧大小。
堆的大小理論上大概等于進(jìn)程虛擬空間大小-內(nèi)核虛擬內(nèi)存大小。windows下,進(jìn)程的高位2G留給內(nèi)核,低位2G留給用戶,所以進(jìn)程堆的大小小于2G。Linux下,進(jìn)程的高位1G留給內(nèi)核,低位3G留給用戶,所以進(jìn)程堆大小小于3G。
32位windows下,一個(gè)進(jìn)程空間4G,內(nèi)核占2G,留給用戶只有2G,一個(gè)線程默認(rèn)棧是1M,所以一個(gè)進(jìn)程最大開(kāi)2048個(gè)線程。當(dāng)然內(nèi)存不會(huì)完全拿來(lái)做線程的棧,所以最大線程數(shù)實(shí)際值要小于2048,大概2000個(gè)。
32位Linux下,一個(gè)進(jìn)程空間4G,內(nèi)核占1G,用戶留3G,一個(gè)線程默認(rèn)8M,所以最多380個(gè)左右線程。(ps:ulimit -a 查看電腦的最大進(jìn)程數(shù),大概7000多個(gè))
以上就是動(dòng)力節(jié)點(diǎn)小編介紹的"進(jìn)程空間分配和堆棧大小",希望對(duì)大家有幫助,想了解更多可查看Java堆棧。動(dòng)力節(jié)點(diǎn)在線學(xué)習(xí)教程,針對(duì)沒(méi)有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門(mén)到精通,主要介紹了一些Java基礎(chǔ)的核心知識(shí),讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
Java實(shí)驗(yàn)班
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
Java就業(yè)班
有基礎(chǔ) 直達(dá)就業(yè)
Java夜校直播班
業(yè)余時(shí)間 高薪轉(zhuǎn)行
Java在職加薪班
工作1~3年,加薪神器
Java架構(gòu)師班
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)