Borneq wrote: > Użytkownik "Lars T. Kyllingstad" <[email protected]> napisał w > wiadomości news:[email protected]... >> Since the GC keeps track of the length of the memory block, it can also >> tell whether the pointer is inside the memory block. >> if (pointer >= startOfBlock && pointer < startOfBlock + blockLength) >> doNotCollect(); > > How compute startOfBlock ? GC keep startOfBlock for each pointer (pointer > consits of actual pointer and pointer to startOfBlock)? > or search for pointer such Block that pointer betwen > startOfBlock..startOfBlock + blockLength ?
GC doesn't keep track of pointer, it only keeps track of the start of allocated memory and the length of that allocated block. it then has to scan to see if there are any pointers into that allocated block. This is why if you slice a subsection of an array the memory doesn't just get freed. -Rory
