Download presentation
Presentation is loading. Please wait.
Published byMiles Foster Modified over 9 years ago
1
An Adaptive, Region-based Allocator for Java Feng Qian, Laurie Hendren {fqian, hendren}@cs.mcgill.ca Sable Research Group School of Computer Science McGill University
2
Motivation ● Reduce GC work by object stack- allocation ● Drawbacks of previous approach for Java – whole-program escape analyses – restrictions on stackable objects: ● trivial finalize method ● limited sizes of arrays ● non-overlapping lifetime in a loop
3
Goals ● Reduce GC work by cheaply reclaiming non-escaping objects, but: – should not rely on expensive program analyses – overcome restrictions of stack-allocation ● Preserve full semantics of Java Virtual Machines ● Explore runtime information of Java programs
4
Road Map ● Motivation & Introduction Region-based Allocator ● Experimental Results ● Conclusion & Future work
5
Proposal ● Use write barriers to dynamically categorize allocation sites as local or non-local ● Allocate objects in regions instead of stack frames ● Adaptively change allocation decisions
6
R2 Thread Stack From Space To Space Heap Global Region R1 R2
7
Thread Stack From Space To Space Heap R1 Global Region R2
8
Definitions ● Escaping Object: An object escapes its allocation region if and only if it is referenced by an object in another region ● Non-local Allocation Site: An allocation site becomes non-local when an object created by that site escapes
9
Heap Organization ● Heaps are managed as regions consisting of a set of pages: – A Global region contains escaping objects and objects created from non-local sites – A Free list links free pages – Local regions act as extensions of stack frames, allocate spaces for objects created from local sites
10
Allocation Sites and Objects ● Each allocation site has one unique index, with one of two states: – local, creates objects in local regions – non-local, creates object in the Global region ● An object header contains: – the index of its allocation site (sharing space with thin locks) – an escaping bit
11
a = new A(); a.1 1: a = local_new A();b.f = a 1: a = global_new A(); ba.1
12
Region Allocation ● Method prologue and epilogue have instructions allocating and releasing regions ● A region has one of two states: – clean: pages are reclaimed when the host stack frame popped – dirty: pages are appended to the Global region collected by GC
13
Write Barriers ● Objects may escape local regions by four types of byte codes: putstatic, putfield, aastore, and areturn ● Write barriers capturing escaping objects have two purposes: – safety: marking regions as dirty – adaptation: marking allocation sites as non- local
14
Put Them Together ● Initially, all allocation sites in a method are in the local state ● As the program proceeds, some become non-local, and will create future objects in the Global region ● The local regions of future activations are more likely to be clean ● Write barriers guarantee the safety
15
Specific Issues for Java ● areturn instruction ● exceptions (and athrow instruction) ● finalize method
16
Road Map ● Motivation & Introduction ● Region-based Allocator Experimental Results ● Conclusion & Future work
17
Prototype Implementation ● Jikes RVM: we choose the baseline compiler, and a semi-space copying collector ● Settings: – Fixed page size – Did not use large object heap – Objects straddling multiple pages
18
Experimental Results ● Behavior study of SPECjvm98 & soot-c: – Allocation behavior – Effect of regions and page sizes on collections and fragmentation – Behavior of write barriers – Effect of adaptation – Impact on thin locks
19
R2R1 b a c
20
Allocation Distribution
21
Effect of Regions and Page Sizes Dynamic measurement of: ● number of collections ● froth rate (unused bytes on pages)
22
# collections froth rate BASE2561K4K2561K4K compress777 (13%)70.03%0.11%0.47% db444 ( 0%)40.05%0.23%1.05% jack978 (23%)91.29%5.97%27.52% javac12 15 ( 9%)254.96%29.41%130.42% jess121111 ( 7%)110.13%0.53%2.19% mpeg000 (28%)00.62%2.10%9.05% mtrt711 (81%)10.03%0.09%0.38% soot-c151313 (19%)151.09%4.89%23.49% * 50M total heap space with ~25M in each semi-space
23
Behavior of Write Barriers Write barriers for putfield, aastore :
24
Region Allocation at Runtime
25
Effect of Adaptation
26
Effect of Adaptation (Cont.)
27
More on Adaptation with adaptationwithout adaptation #collectionsfroth#collectionsfroth javac1529%96589% jess11 1% 2 9% Current scheme predicts future objects will escape after one object from that site escapes Without adaptation predicts future objects non-escaping
28
Impact on Thin Locks ● Share space with thin locks in a two- word object header. ● Less than 5% of thin locks require one additional check on common path ● One additional check on uncommon path (see the paper for details)
29
Related Work ● Escape analysis and stack allocation for Java programs – Gay et.al. [CC’00], Choi et.al. [OOPSLA’99], Blanchet [OOPSLA’99], Whaley et.al. [OOPSLA’99], … ● Memory Management with Regions (Scoped memory regions) – Tofte et.al.[IC’97], Gay et.al. [PLDI’98], Deters et.al. [ISMM’02], …
30
Conclusions ● We have presented the idea of using regions to reduce the work of GC in Java Virtual Machines ● We have implemented the prototype in a real virtual machine and proposed several techniques to reduce the overhead ● Our study of allocation behavior validates the idea
31
Future Work ● Relax definition of escaping by using stack discipline and region hierarchy ● Look for better prediction schemes (calling context) ● Optimize write barriers with cheap analyses ● Combine the allocator with other types of GC
32
?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.