wince 内存释放_修改wince存储内存和程序内存收藏

修改wince存储内存和程序内存收藏

我使用的方法,不过还是不确定这个参数是什么意思

包含Pwindbas.h头文件

SetSystemMemoryDivision(512*2);

//设置存储内存和程序内存,设置以后存储内存为4M

转个帖子

WinCE中划分Storage Memory和Program Memory

2008-12-02 11:55

首先解释下这两个东东

The RAM on a Windows CE–based device is divided into two areas:

the object store and the program memory.

The object store resembles a permanent, virtual RAM disk. Data

in the object store is retained when you suspend or perform a soft

reset operation on the system. Devices typically have a backup

power supply for the RAM to preserve data if the main power supply

is interrupted temporarily. When operation resumes, the system

looks for a previously created object store in RAM and uses it, if

one is found. Devices that do not have battery-backed RAM can use

the hive-based registry to preserve data during multiple boot

processes.

The program memory consists of the remaining RAM. Program memory

works like the RAM in personal computers — it stores the heaps and

stacks for the applications that are running.

我承认我很懒,上面一段话的URL是ms-help://MS.WindowsCE.500/wcecoreos5/html/wce50conMemoryArchitecture.htm

具体的设置可以在系统启动后,Control Panel -> System

-> Memory 里面看到。默认的是把内存五五开,一半给Storage Memory,

一半给Program Memory用。这样显然是不合算的。以64M的RAM为例, 启动后Storage Memory 32M,

而因为没有留出界面让用户往里面拷东西, 任何时候in use都不会超过10M; Program Memory也是32M,

但启动后就用掉27M, 实际上应用程序可用的内存只有5M, 一旦达到了上限,

那么每前进一步都要很艰难地去释放几十K内存,然后用掉,再去释放几十K内存,如此循环,此时应用程序的运行速度狂慢无比.

划分的方法也很简单, 只不过可能没人注意到而已.

说明在ms-help://MS.WindowsCE.500/wceosdev5/html/wce50lrfFSRAMPERCENT.htm

懒得看英文的人就继续往下看

其实说白了就一句话, 在BSP的config.bib里 CONFIG 区添加这个变量 FSRAMPERCENT =

0xXXXXXX, 但注意两点,

(1) 必须写在config.bib的CONFIG区里,

不是plagform.bib不是config.reg等其他文件而是config.bib,也不是config.bib文件的任意地方而一定要在CONFIG

REGION里.

(2) FSRAMPERCENT这个变量一定得写为FSRAMPERCENT, 不能写成FSROMPERCENT不能写成ILOVEU,

或者阿猫阿狗什么的.

写下这两句的时候本人已经打开无敌光环, 免疫一切鸡蛋和西红柿.

FSRAMPERCENT是一个4byte长度的十六进制数, 我们用代数假设 FSRAMPERCENT = 0xQXYZ,

其中Q,X,Y,Z都是十六进制数

那么最终划分给Storage Memory的大小 = ( Q + X + Y + Z ) / 0x400 *

TOTAL_RAM_SIZE

以文中的例子来算, FSRAMPERCENT=0x10203040, 假设TOTAL_RAM_SIZE=64M,

那么StorageMemory= (0x10 + 0x20 + 0x30 + 0x40) / 0x400 * 64M =

10M.

顺路鄙视一下,WinXP自带的计算器里无法输入和计算带小数位的非十进制数.

我已知的划分Storage Memory和Program Memory的方法一共有三种,也是MS文档中给出的三种方法

(1) statically using FSRAMPERCENT

(2) during boot using pOEMCalcFSPages

(3) using api SetSystemMemoryDivision

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值