我正在將Windows 7庫移植到嵌入式平臺。爲了做到這一點,我的僱主向我詢問了我的系統在移植後需要的內存數量(和CPU,但讓我們集中精力記憶內存) - 這樣他就可以根據我的需要調整板卡的尺寸。Windows到嵌入式端口:數據和代碼內存大小
我在互聯網上看看,那裏似乎不存在這個問題多的信息,因此,我的問題:爲了得到閃存代碼的內存佔用的一個粗略的想法
內存(代碼只有沒有數據的內存),我在互聯網上閱讀,我應該總結我使用的所有DLL的大小。看起來,所有編譯器和平臺都爲代碼佔用空間提供了不同的大小,但總體上代碼的大小(沒有數據)通常非常接近。你確認嗎?
爲了處理數據所需的內存(堆+堆棧,但沒有代碼),我看了一下任務管理器(和進程管理器)。看來我使用的數據總量是在「峯值工作集」中指定的。我對此有幾點疑問:
2.a. 「工作集」包含堆+堆棧內存還是僅對應於堆?
2.b. 「工作集」是否也包含代碼的大小? (因爲我在Windows 7上,代碼也存儲在RAM中,而不是嵌入式系統中的閃存中),還是隻對應於數據?
2.c.看起來'峯值工作集'反映了從程序啓動時實際存儲在RAM中的最大物理內存量,但它並不反映程序之後可能需要的大小(如果我碰巧在運行時分配內存 - 這將是不好的;) - 峯值將繼續增加)。你確認嗎?
2.d.因此,您是否也確認,如果我在運行時不分配內存,「峯值工作集」應該大致是我的嵌入式系統需要的RAM的最大大小?最高位大小差異的原因是系統技術的區別...
感謝,
安託萬。
最好的東西是一個跟蹤malloc()和什麼的調試器,而且你會模糊系統來充分運用它。您在任務管理器中看到的內容並不特別準確。 – 2012-07-13 16:55:59
操作系統通過利用虛擬內存並儘可能多地爲進程提供合理的物理內存來優化內存使用。工作集編號告訴你爲進程運行多少物理內存。這可能比流程需求少得多,少於代碼+數據+堆+堆棧大小。移植到不同的操作系統和硬件時,不能依賴工作集編號。這樣做毫無意義。 – 2012-07-13 22:41:37