[Gc] Re: Re: What's difference in GC between Windows version and WinCE version?

biosli biosli at hotmail.com
Sat Oct 9 00:09:50 PDT 2010


Hi,Ivan!

Ivan Maidanski <ivmai at ...> writes:

> 
> Hi!
> 
> WinCE block allocation algorithm is a bit different from Win32.
> 
> Try play with GC_FREE_SPACE_DIVISOR and GC_INITIAL_HEAP_SIZE.
> 

Thanks a lot.
I set GC_FREE_SPACE_DIVISOR as 100, and GC_INITIAL_HEAP_SIZE as 5*1024*1024, the
program runs with less heap size than default value.
But memory is not release as Windows version. 
In Windows version, I release used memory by GC_Free, it will move out form
"Blocks in use" immediately. In WinCE version, it's not.
So there are some further question, in WinCE version:
1. When heap size increace as a large size, the used memory in "Blocks in use"
seems "locked", it will not return to "Free blocks".
	 Is that means GC break?
	 
2. I calls GC_dump() at program exit, I finds the lines, as following:
---------------------------------------------------------------
Free list 53:
	01580000 size 208896 start black listed
	01540000 size 208896 start black listed
	01500000 size 204800 start black listed
	014C0000 size 204800 start black listed
...............
Free list 60:
	013E0400 size 570368 partially black listed
	00A30000 size 282624 partially black listed
	00C50400 size 303104 partially black listed
---------------------------------------------------------------
What are "start black listed" are "partially black listed" means?
Should I fix something makes it as "not black listed"?

3. Is there any other way, move out released memory form "Blocks in use"
immediately? If this done, question 1 will never happen.

Best regards.
biosli




More information about the Gc mailing list