compact framework - Windows Mobile: How to identify and prevent shared DLLs from occupying address space? -
i'm supporting "old" mobile application on wm6 platform. had upgrade new devices because old device isn't available anymore. meant upgrade wm6.1 wm6.5, , .net cf 2.0 3.5.
the main problem application constant memory pressure (outofmemoryexceptions). did try fix memory leaks, , optimized code memory consumption. however, on new device whole situation worse on older. understand there 32mb virtual memory limit each process, regardless of how physical memory available (interesting read).
i used virtualmemory.exe , motorola emscript visualize/analyze 32mb memory slot of application. process virtual memory looks (32mb total, each gray bar represents 1mb, top new device, bottom old device). right of red bar third party dlls (os, vendor, ...). lost 3mb switching new device.
it seems application suffering "dll crunch" problem, third party dlls occupy virtual memory addresses on right hand side (highest addresses). note: blue bar on left occupied .exe, able eliminate using this awesome trick.
so here question: how can identify dlls occupying address space? tried emscript gives list dlls , theire addresses, not ones on right of red bar (shared dlls). , there general recommendations or hints on how reduce amount of lost address space? recommended use "reduced graphics driver", i'm not yet convinced addressing right issue.
the new device motorola mc65, in case relevant.
to improve memory available .net cf applications, can implement trick explained in article memmaker .net compact framework: moving managed code out of exe dlls. can free memory in 32mb slot.
other relevant articles slaying virtual memory monster:
Comments
Post a Comment