wince
下的記憶體實際上是分為三個部分的
. 先說這幾部分的名字,物件儲存
, 系統記憶體,程式記憶體
. 準確來講,應該用下面公式說明
wince
記憶體=
系統記憶體
+ (物件儲存
+ 程式記憶體
).這裡德記憶體也就是我們平時說的
sdram
,而我們的平台用的
64m的
sdram。在
wince
系統的控制面板系統中可以看到系統內存在
30m左右,但是硬體上
sdram
明明是64m
,為什麼這裡只有
30m呢?因為
wince
系統本身執行要占用
30m左右記憶體。這裡可以把這部分記憶體稱為系統記憶體。其實
wince
正常給我們用的記憶體只有
30m左右,前提是你用的
sdram
是64m
。下面我們就仔細分析下剩下的這
30m。也就是程式記憶體和儲存記憶體
(物件儲存)。
程式記憶體不用解釋,就是可供我們的程式用的記憶體。
物件儲存是
wince
裡乙個新的概念
. 嵌入式
wince
作業系統一般是用在消費電子上面
, 比如
pocket pc,
手機, pda
等移動裝置上
. 這一類的裝置一般都是有兩個電源的
, 乙個是主電源
(比如你的手機電池
), 乙個是後備電池
(拆開手機,電路板上可以找到那個小電池
). 後備電池的作用就是在主電源沒電的情況下,維持作業系統的一些需要儲存的資料
, 比如登錄檔
, 資料庫等
. 而這些要儲存的資料就是放在物件儲存裡的,可以複製乙個檔案到
wince
下(sd卡,u
盤除外),
會發現物件儲存占用空間變大,到這裡,你應該理解物件儲存了。
現在整個
wince
記憶體分配有個清楚的概念了,但是我們在平時運用時經常會遇到應用程式開闢一段記憶體導致應用程式掛了的現象。這裡不管你是動態申請的還是幹嗎。如果記憶體分配中程式記憶體過小。這裡前提是你的應用程式很大很複雜,這種現象肯定會有的。
那麼怎麼才能申請到大的記憶體空間呢?當然你可以在控制面板中滑動那個分配程式記憶體和儲存記憶體大小的滑動條,但是這種情況在系統冷啟動後有恢復成系統預設的了。就是他們兩對半開。那麼是不是我們不能修改這個值了呢?沒關係。既然微軟讓你看到這個玩意肯定有地方改的。上網
下很多辦法。這裡我介紹兩種:1.在
config.bib
中有個config
這裡的詳細內容可以參考何宗建老師的書。在
config
字段下面加入
fsrampercent=0x20202020
。這裡為什麼是
0x20202020
。可以參考網上牛人的公式。
fsrampercent
是乙個4byte
長度的十六進製制數
, 我們用代數假設
fsrampercent = 0xqxyz,
其中q,x,y,z
都是十六進製制數
那麼最終劃分給
storage memory
的大小= ( q + x + y + z ) / 0x400 * total_ram_size
以我平台例子可以發現
storage memory = (0x20+0x20+0x20+0x20)/0x400*64 = 3800kb.
2.網上也有人說動態分配不過這個辦法我沒有試驗過不知道是不是成功的。其實我個人覺得如果動態分配很穩定的話肯定是動態的好了,這樣可以根據不同的應用來分配不同的程式記憶體大小。
typedef dword (*setsystemmemorydivision)(dword);
typedef bool (*getsystemmemorydivision)(lpdword,lpdword,lpdword);
void
setobjectmemoryspace
(int nsize)
(*setsystemmemorydivisionproc)(npagecount);}}
setsystemmemorydivisionproc = null;
getsystemmemorydivisionproc = null;
freelibrary(hdll);
hdll = null;
}#endif
}
wince修改程式記憶體和儲存記憶體
找到config.bib檔案,目錄為x wince600 platform yc2440 files config.bib 在config段加入 fsrampercent 0x18181818 0x18 0x18 0x18 0x18 0x400 64m 6m storage mem 64m為系統ra...
WINCE 程式記憶體和儲存記憶體及其分配方法
wince 下的記憶體實際上是分為三個部分的.先說這幾部分的名字,物件儲存,系統記憶體,程式記憶體.準確來講,應該用下面公式說明wince記憶體 系統記憶體 物件儲存 程式記憶體 這裡德記憶體也就是我們平時說的sdram,而我們的平台用的64m的sdram。在wince系統的控制面板系統中可以看到系...
Wince6 0 儲存記憶體與程式記憶體比例調整
wince600 platform files config.bib 找到 config 在autosize on後新增一行 fsrampercent 40404040 說明 fsrampercent 格式 fsrampercent number 預設值為0x80808080。指定為檔案系統分配的記...