亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
樓主: snow_insky
打印 上一主題 下一主題

對Linux堆內(nèi)存釋放的總結(jié) [復制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2006-01-05 11:40 |只看該作者
good job!@_@

論壇徽章:
0
12 [報告]
發(fā)表于 2006-01-05 17:27 |只看該作者

用戶進程?臻g的設置

最近看了一些文章,關(guān)系到用戶棧的設置,順便在這里發(fā)給大家!

目前用戶態(tài)棧是放在3G空間的下面,默認的情況下是8M,我們可以通過一些方法來改變棧的位置。
如:
你寫一個函數(shù),在該函數(shù)中聲明一個靜態(tài)變量static stack[8M], 然后移動棧指針asm ("movl %0, %%esp\n" : : "a" (stack + sizeof(stack)));我們就得到了一個新的堆棧。

呵呵大家可以試試!

論壇徽章:
0
13 [報告]
發(fā)表于 2006-01-06 14:32 |只看該作者
請教個問題, 我寫了個程序,發(fā)現(xiàn)每次分配10K內(nèi)存后,顯示堆內(nèi)存數(shù)量(VmData)增加8K或12K(cat /proc/pid/status ),12K可以理解,為什么有時候會是8K?而且8K和12K不是交錯增加的,有時malloc 10K好幾次,但都是增加8K。

論壇徽章:
0
14 [報告]
發(fā)表于 2006-01-06 14:58 |只看該作者
10K,是2頁半。物理分配按頁。

12K, 3 PAGES
下次,分8K即可,加上上次空閑的半PAGE

原帖由 zhhhuang 于 2006-1-6 14:32 發(fā)表
請教個問題, 我寫了個程序,發(fā)現(xiàn)每次分配10K內(nèi)存后,顯示堆內(nèi)存數(shù)量(VmData)增加8K或12K(cat /proc/pid/status ),12K可以理解,為什么有時候會是8K?而且8K和12K不是交錯增加的,有時malloc 10K好幾次,但都 ...

論壇徽章:
0
15 [報告]
發(fā)表于 2006-01-06 15:33 |只看該作者
有時malloc 10K好幾次,但都是增加8K?

論壇徽章:
0
16 [報告]
發(fā)表于 2006-01-06 15:44 |只看該作者
呵呵,這難道不是正常的嗎? 思一克    已經(jīng)說得很清楚了啊

物理頁面是按照4K的頁管理的,為了效率,我們的虛擬地址空間也是按照4K大小為單位的頁進行管理的,你第一次分配10K,它應該會增加12K,然后你再分配10K的時候,由于有2K的空閑,它只需增加8K就能滿足你的需求了啊!

干嘛,還不滿意,認為內(nèi)核虧待你了???呵呵,開玩笑!

論壇徽章:
0
17 [報告]
發(fā)表于 2006-01-08 12:02 |只看該作者
如果在系統(tǒng)內(nèi)存耗盡的情況下,GLIBC會不會對進程沒有使用并且也沒有歸還系統(tǒng)的內(nèi)存塊進行操作?
我在服務器上面看到的情況是,系統(tǒng)內(nèi)存一直消耗到剩余8M左右就不會在消耗了!但所有進程的內(nèi)存使用量之和要小于在TOP中看到的被使用的內(nèi)存總數(shù),是不是樓主說的原因呀,那么到剩余8M以后會發(fā)生什么事情呀,期待中

論壇徽章:
0
18 [報告]
發(fā)表于 2006-01-08 12:17 |只看該作者
原帖由 zhangjiakouzf 于 2006-1-8 12:02 發(fā)表
如果在系統(tǒng)內(nèi)存耗盡的情況下,GLIBC會不會對進程沒有使用并且也沒有歸還系統(tǒng)的內(nèi)存塊進行操作?
我在服務器上面看到的情況是,系統(tǒng)內(nèi)存一直消耗到剩余8M左右就不會在消耗了!但所有進程的內(nèi)存使用量之和要小于在TO ...


首先,由于linux用了cow技術(shù),所以內(nèi)存透支是允許存在的。
如果系統(tǒng)內(nèi)存真正耗盡,下面要做的事就不是glibc能做的了。內(nèi)核有一個OOM killer,在內(nèi)存耗盡的時候會挑選一個進程殺死,來獲得內(nèi)存。不過現(xiàn)在的系統(tǒng)內(nèi)存大多很大,所以OOM killer的作用不大。

論壇徽章:
0
19 [報告]
發(fā)表于 2006-01-08 20:47 |只看該作者
原帖由 zhangjiakouzf 于 2006-1-8 12:02 發(fā)表
如果在系統(tǒng)內(nèi)存耗盡的情況下,GLIBC會不會對進程沒有使用并且也沒有歸還系統(tǒng)的內(nèi)存塊進行操作?
我在服務器上面看到的情況是,系統(tǒng)內(nèi)存一直消耗到剩余8M左右就不會在消耗了!但所有進程的內(nèi)存使用量之和要小于在TO ...


首先:要說明的是,你用top觀察的結(jié)果是不準確的,因為有共享庫的存在,所以你可能重復計算;
其次:glibc是不會幫忙系統(tǒng)處理內(nèi)存緊張情況的,因為它也只不過是一個共享庫而已,所不同的是,它是所有應用程序都需要的(當然,你也可以通過一定的方式,來讓你的應用程序不使用glibc)
再次:你所看到的進程消耗的內(nèi)存小于top的觀察值是因為,你需要加上buffer和cache的值,才能基本等于top中所觀察到的內(nèi)存使用量。


不知道這些解釋,你能不能明白,如果不行,我們再繼續(xù),呵呵!

下次我會說明free命令的內(nèi)容的含義!

論壇徽章:
0
20 [報告]
發(fā)表于 2006-01-08 20:56 |只看該作者
還有一點忘記說了,你的系統(tǒng)空閑內(nèi)存停留在8M左右,是因為,你的buffer和cache已經(jīng)達到了一定的值,不需要再增加了,所以你會發(fā)現(xiàn)它停在那里。

還有,你執(zhí)行如下命令: cat /proc/sys/vm/kswapd,你會看到你的系統(tǒng)保留的空閑內(nèi)存的閥值,具體涵義,你可以搜索一下它的涵義。

richardhesidu :并不是如你所說,所有的系統(tǒng)都有很多內(nèi)存,你沒有考慮到嵌入式系統(tǒng)的應用。我們的產(chǎn)品實現(xiàn)很多功能,但只有32M內(nèi)存,呵呵,難!我們正在做內(nèi)存優(yōu)化,所以做了好多工作,并會逐步拿出來和大家分享。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP