locked
WM6.5.3 的进程内存大小 RRS feed

  • 问题

  • 之前看到有人说WinCE5.0的进程可访问的内存大小不超过 32MB, 现在我使用 WM 6.5.3 (听说是基于 WinCE 5.2) DTK 开发,在模拟器中申请到最大内存为22MB,请问这是不是说在 WM6.5.3 中进程可访问的内存大小不超过32MB,希望能给出官方的相关说明在哪。

    谢谢!

    2011年6月13日 7:38

答案

  • 谢谢!

    我在WM6.5.3模拟器中测试:

    1. 通过 VirtualAlloc 一次可申请到小于 32MB (32MB - 1B)的内存,不限次数直至物理内存不足.....

    2. 通过共享内存方式一次可申请到相当大的内存空间,但貌似访问效率较低,其写入速率与 通过 new 或 VirtualAlloc 获取的内存的比值约 1:2。

     

    我发现通过 IImage 接口可以实现解码大文件图片,只是内存不足时要先把图片写入到文件系统,貌似临时文件夹可用空间不太大,就把临时文件存放到存储卡吧...只是效率就...


    • 已编辑 MZHA 2011年6月17日 5:08 修改补充
    • 已建议为答案 Jiong ShiMVP 2011年6月23日 8:39
    • 已标记为答案 MZHA 2011年6月24日 0:26
    2011年6月16日 9:51

全部回复

  • hello,MZHA

    WM each process only have 32M virtual memory limitation and not all of them are free. For more information:
    Windows CE .NET Advanced Memory Management


    施炯
    2011年6月13日 23:11
  • 谢谢,这个我看了。

    不好意思,我没有说明我的意图。

    我想确认 WM6.5.3 是不是有这个限制 (希望能给出针对 WM6.5.3 的说明),因为 CE5.2 是一个没有开放的版本,有人说跟 CE6.0 是相似的, 在CE6.0 中这个限制应该是 1G了 。

    我现在需要转换图片格式(图片可能超过30M),现在用 IImagingFactory ,它需要一个 IStream 接口,而我知道的获取 IStream 接口的方法只有 CreateStreamOnHGlobal, 这个函数要用 GlobalAlloc (CE 里被替换成了 LocalAlloc) 申请的内存。(希望能给个获取大文件 IStream接口或者是编解码大图片的方法)

     

    2011年6月14日 0:43
  • 您好,

    我这边找到一个帖子讨论内存分配的问题,希望能给您帮助

    http://social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/7114837a-e6db-485e-91bf-62fcc69ba0e1

    致礼


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年6月15日 6:14
  • 谢谢!

    我在WM6.5.3模拟器中测试:

    1. 通过 VirtualAlloc 一次可申请到小于 32MB (32MB - 1B)的内存,不限次数直至物理内存不足.....

    2. 通过共享内存方式一次可申请到相当大的内存空间,但貌似访问效率较低,其写入速率与 通过 new 或 VirtualAlloc 获取的内存的比值约 1:2。

     

    我发现通过 IImage 接口可以实现解码大文件图片,只是内存不足时要先把图片写入到文件系统,貌似临时文件夹可用空间不太大,就把临时文件存放到存储卡吧...只是效率就...


    • 已编辑 MZHA 2011年6月17日 5:08 修改补充
    • 已建议为答案 Jiong ShiMVP 2011年6月23日 8:39
    • 已标记为答案 MZHA 2011年6月24日 0:26
    2011年6月16日 9:51