210 likes | 309 Views
Exploiting Prolific Types for Memory Management and Optimizations. By Yefim Shuf et al. Roadmap. What is prolific types? Properties of prolific types Applications Type-based garbage collection Reducing memory consumed by objects Object co-allocation Locality-based traversal Conclusions.
E N D
Exploiting Prolific Types for Memory Management and Optimizations By Yefim Shuf et al.
Roadmap • What is prolific types? • Properties of prolific types • Applications • Type-based garbage collection • Reducing memory consumed by objects • Object co-allocation • Locality-based traversal • Conclusions
Prolific Types • Observation: • Relatively few object types usually account for a large percentage of objects (and heap space) • These frequently instantiated types are prolific types • Others are non-prolific types
Identifying Prolific Types • Offline profiling • Dump information in a file • Adaptive approach • Collect info during execution • Sampling • Compile-time • May be possible
Checking a Variable for Prolific Type • Given “T o” • Object o is prolific if all subclasses of T are prolific • Need class hierarchy analysis • Check added at compile time • Handle dynamic loading • A simple heuristic • Prolific types are likely leaves or close to leaves • Treat all children of prolific types as prolific
Application 1 :Type-based Memory Management • Objects of prolific types have short lifetimes • Resemble nature: offspring of prolific species are often short-lived • Heap space partitioned into two regions • P-region: objects of prolific types • NP-region: objects of non-prolific types • Collection • Perform frequent minor collection only in the P-region • In frequent full collection • Survivors of P-region collection stay in P-region • Compared to generation collection • Write barriers needed to remember pointer from NP-region to P-region
Additional Advantages • Compile-time write barrier elimination • Eliminate barrier that are not pointing from NP to P • P-region Collection Processing • Only need to scan pointers to P-region • Methods return two reference list • One full list • One partial list: references to prolific objects
Application 2: Short Type Pointers • Observation: The number of prolific types is small • Mostly <= 16 • Application • Shorten object headers • Using a 4-bit field to encode TIB • The value is an index to the table of real TIBs
Application 3: Object Co-allocation • Properties • Objects of prolific types tend to access together • The large number of prolific objects denote potential benefit • Co-allocate objects of prolific types • Improve spatial locality • Reduce GC times with improved GC-time locality • Reduce memory fragmentation • Objects born together tend to die together
The Co-allocation Algorithm • Create a directed graph • Nodes: types • Edges: from a (source) type to a type of the source’s reference field • P-edge: prolific type to prolific type • NP-edge: non prolific type to non prolific-type • Others • Co-allocation • Partition the graph into clusters • Each cluster is a set of nodes linked by P-edges • When one node (representative node) of a cluster is allocated, reserve enough space for other nodes in cluster • In practice, each cluster consists of two nodes
Locality-based Traversal • Divide heap into chunks • Visit the objects in to same chunk before those in other chunks • Improve GC locality • Can improve locality when combined with a copy collector
Implementation Issues • Choice of chunk size • No bigger than the physical memory of a process • Which chunk to collect first? • Last chunk allocated (may still in cache) • Which pointer to choose from LP? • Choose an object close to the one visited recently • Which chunk next? • With most reachable objects by sampling • A pointer into the chunk closest to the current chunk
Conclusions • Prolific type based GC perform better than a generational GC • With encode prolific types, heap space reduced • Proliflic objects co-allocation improve performance with non-copying GC • Locality-based GC traversal has positive impacts on copying GC