Sometimes i have memory problem when my program wants to access an sql mobile database.
SqlXXXdll could not be loaded...please reintsall it...
I used .Net Compact Framework Remote Performance Monitor but it was not so helpful to find the memory
problem.
After that i tried dumpmem utility:
http://support.microsoft.com/default.aspx?scid=kb;en-us;326164
and i really see there is no more memory above the heap:
Process Memory Dump
MainProject.exe
Virtual Memory Dump
======================
Legend
C - Committed
R - Reserved
F - Free
RO - Read Only
RW - Read Write
WC - Write Copy
X - Execute
XR - Execute Read
XRW - Execute Read Write
XWC - Execute Write Copy
G - Guard
NA - No Access
NC - No Cache
2E000000 10000 F NA
2E010000 2000 R NA Image <--Heap start
2E012000 1000 C RW Image
2E013000 43000 R NA Image
2E056000 1000 C RO Image
2E057000 1000 R NA Image
2E058000 1000 C RO Image
2E059000 1000 R NA Image
2E05A000 1000 C RO Image
2E05B000 1000 R NA Image
2E05C000 4000 F NA
2E060000 1000 C RW Private
2E061000 F000 F NA
2E070000 B000 R NA Private
2E07B000 5000 C RW Private
2E080000 2F000 C RW Private
2E0AF000 1000 F NA
2E0B0000 12000 C RW Private
2E0C2000 1D000 R NA Private
2E0DF000 1000 F NA
2E0E0000 2F000 C RW Private
2E10F000 1000 F NA
2E110000 2F000 C RW Private
2E13F000 1000 F NA
2E140000 9000 C RW Private
2E149000 26000 R NA Private
2E16F000 1000 F NA
2E170000 F000 R NA Private
2E17F000 1000 C RW Private
2E180000 F000 R NA Private
2E18F000 1000 C RW Private
2E190000 E000 R NA Private
2E19E000 2000 C RW Private
2E1A0000 E000 R NA Private
2E1AE000 2000 C RW Private
2E1B0000 F000 R NA Private
2E1BF000 1000 C RW Private
2E1C0000 10000 C RW Private
2E1D0000 2F000 C RW Private
2E1FF000 1000 F NA
2E200000 11000 C RW Private
2E211000 F000 F NA
2E220000 17000 C RW Private
2E237000 18000 R NA Private
2E24F000 21000 F NA
2E270000 97000 C RW Private
2E307000 9000 R NA Private
2E310000 97000 C RW Private
2E3A7000 9000 R NA Private
2E3B0000 10000 F NA
2E3C0000 1B000 C RW Private
2E3DB000 5000 R NA Private
2E3E0000 1B000 C RW Private
2E3FB000 5000 R NA Private
2E400000 2F000 C RW Private
2E42F000 1000 F NA
2E430000 E000 R NA Private
2E43E000 2000 C RW Private
2E440000 2F000 C RW Private
2E46F000 21000 F NA
2E490000 2F000 C RW Private
2E4BF000 11000 F NA
2E4D0000 2F000 C RW Private
2E4FF000 1000 F NA
2E500000 2F000 C RW Private
2E52F000 1000 F NA
2E530000 10000 C RW Private
2E540000 2F000 C RW Private
2E56F000 1000 F NA
2E570000 2F000 C RW Private
2E59F000 1000 F NA
2E5A0000 2F000 C RW Private
2E5CF000 1000 F NA
2E5D0000 2F000 C RW Private
2E5FF000 1000 F NA
2E600000 2F000 C RW Private
2E62F000 1000 F NA
2E630000 2F000 C RW Private
2E65F000 1000 F NA
2E660000 2F000 C RW Private
2E68F000 1000 F NA
2E690000 2F000 C RW Private
2E6BF000 1000 F NA
2E6C0000 2F000 C RW Private
2E6EF000 21000 F NA
2E710000 10000 C RW Private
2E720000 10000 C RW Private
2E730000 1F000 R NA Private
2E74F000 31000 F NA
2E780000 2F000 C RW Private
2E7AF000 1000 F NA
2E7B0000 2F000 C RW Private
2E7DF000 1000 F NA
2E7E0000 2F000 C RW Private
2E80F000 11000 F NA
2E820000 1E000 R NA Private
2E83E000 2000 C RW Private
2E840000 2F000 C RW Private
2E86F000 1000 F NA
2E870000 2F000 C RW Private
2E89F000 1000 F NA
2E8A0000 2F000 C RW Private
2E8CF000 1000 F NA
2E8D0000 2F000 C RW Private
2E8FF000 1000 F NA
2E900000 F000 R NA Private
2E90F000 1000 C RW Private
2E910000 97000 C RW Private
2E9A7000 9000 R NA Private
2E9B0000 F000 R NA Private
2E9BF000 1000 C RW Private
2E9C0000 D000 R NA Private
2E9CD000 3000 C RW Private
2E9D0000 1000 C RW Private
2E9D1000 2E000 R NA Private
2E9FF000 11000 F NA
2EA10000 2F000 C RW Private
2EA3F000 1000 F NA
2EA40000 2F000 C RW Private
2EA6F000 1000 F NA
2EA70000 2F000 C RW Private
2EA9F000 1000 F NA
2EAA0000 24000 C RW Private
2EAC4000 B000 R NA Private
2EACF000 1000 F NA <-- the free space between the dlls and the heap
2EAD0000 1000 R NA Image <-- and this is where the first non xip dll starts
What i dont understand is there are a lot of big free blocks in the heap (31000 == 196KB), i called the
GC.Collect and the GC.WaitForPendingFinalizers but its not shrinked physically (maybe just logically).
1) Is there any solution to remove this big free gaps in the heap area?
2) Is there any solution to determine what are these big blocks in the heap 97000 == 600Kb. (Ok i know code review)
I load more 40 png pictures and maybe they consumes a lot of mem.
3) Is there any solution to analyze memory more deep with any tool?
Thanks for help!
what is the purpose for load 40 pictures
do not load them once, because they consumes the memory.
just load them one by one ....
advice:
do not work with GC, let the system do it normally
|||1. ok it doesnt need to load every pics at once but i have a form where i need 20 icon (i use it dynamically)2. i dont work with gc just checked what occurs with the heap in the real memory
I dont know why was this post answer to my question...
No comments:
Post a Comment