Results 1 -
6 of
6
On the Effectiveness of GC in Java
- IN ISMM 2000 PROCEEDINGS OF THE SECOND INTERNATIONAL SYMPOSIUM ON MEMORY MANAGEMENT (MINNEAPOLIS, MN
, 2000
"... We study the effectiveness of garbage collection (GC) algorithms by measuring the time di#erence between the actual collection time of an object and the potential earliest collection time for that object. Our ultimate goal is to use this study in order to develop static analysis techniques that can ..."
Abstract
-
Cited by 18 (0 self)
- Add to MetaCart
We study the effectiveness of garbage collection (GC) algorithms by measuring the time di#erence between the actual collection time of an object and the potential earliest collection time for that object. Our ultimate goal is to use this study in order to develop static analysis techniques that can be used together with GC to allow earlier reclamation of objects. The results may also be used to pinpoint application source code that could be rewritten in a way that would allow more timely GC. Specifically, we compare the objects reachable from the root set to the ones that are actually used again. The idea is that GC could reclaim unused objects even if they are reachable from the root set. Thus, our experiments indicate a kind of upper bound on storage savings that could be achieved. We also try to characterize these objects in order to understand the potential benefits of various static analysis algorithms. The Java Virtual Machine (JVM) was instrumented to measure objects that are r...
On the Usefulness of Type and Liveness Accuracy for Garbage Collection
- ACM Transactions on Programming Languages and Systems
, 2002
"... The effectiveness of garbage collectors and leak detectors in identifying dead objects depends on the accuracy of their reachability traversal. Accuracy has two orthogonal dimensions: (i) whether the reachability traversal can distinguish between pointers and nonpointers (type accuracy), and (ii) wh ..."
Abstract
-
Cited by 16 (1 self)
- Add to MetaCart
The effectiveness of garbage collectors and leak detectors in identifying dead objects depends on the accuracy of their reachability traversal. Accuracy has two orthogonal dimensions: (i) whether the reachability traversal can distinguish between pointers and nonpointers (type accuracy), and (ii) whether the reachability traversal can identify memory locations that will be dereferenced in the future (liveness accuracy). This article presents an experimental study of the importance of type and liveness accuracy for reachability traversals. We show that liveness accuracy reduces the reachable heap size by up to 62% for our benchmark programs. However, the simpler liveness schemes (e.g., intraprocedural analysis of local variables) are largely ineffective for our benchmark runs: one must analyze global variables using interprocedural analysis to obtain significant benefits. Type accuracy has an insignificant impact on a garbage collector s ability to find unreachable objects in our benchmark runs. We report results for programs written in C, C , and Eiffel.
Estimating the Impact of Heap Liveness Information on Space Consumption In Java
- IN ISMM ’02: PROCEEDINGS OF THE 3RD INTERNATIONAL SYMPOSIUM ON MEMORY MANAGEMENT
, 2002
"... We study the potential impact of di#erent kinds of liveness information on the space consumption of a program in a garbage collected environment, specifically for Java. The idea is to measure the time di#erence between the actual time an object is collected by the garbage collector (GC) and the pote ..."
Abstract
-
Cited by 14 (2 self)
- Add to MetaCart
We study the potential impact of di#erent kinds of liveness information on the space consumption of a program in a garbage collected environment, specifically for Java. The idea is to measure the time di#erence between the actual time an object is collected by the garbage collector (GC) and the potential earliest time an object could be collected assuming liveness information were available. We focus on the following kinds of liveness information: (i) stack reference liveness (local reference variable liveness in Java), (ii) global reference liveness (static reference variable liveness in Java), (iii) heap reference liveness (instance reference variable liveness or array reference liveness in Java), and (vi) any combination of (i)-(iii). We also provide some insights on the kind of interface between a compiler and GC that could achieve these potential savings. The Java
Space Profiling for Parallel Functional Programs
"... This paper presents a semantic space profiler for parallel functional programs. Building on previous work in sequential profiling, our tools help programmers to relate runtime resource use back to program source code. Unlike many profiling tools, our profiler is based on a cost semantics. This provi ..."
Abstract
-
Cited by 9 (2 self)
- Add to MetaCart
This paper presents a semantic space profiler for parallel functional programs. Building on previous work in sequential profiling, our tools help programmers to relate runtime resource use back to program source code. Unlike many profiling tools, our profiler is based on a cost semantics. This provides a means to reason about performance without requiring a detailed understanding of the compiler or runtime system. It also provides a specification for language implementers. This is critical in that it enables us to separate cleanly the performance of the application from that of the language implementation. Some aspects of the implementation can have significant effects on performance. Our cost semantics enables programmers to understand the impact of different scheduling policies yet abstracts away from many of the details of their implementations. We show applications where the choice of scheduling policy has asymptotic effects on space use. We explain these use patterns through a demonstration of our tools. We also validate our methodology by observing similar performance in our implementation of a parallel extension of Standard ML.
Generating object lifetime traces with Merlin
- ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS (TOPLAS
, 2006
"... Programmers are writing a rapidly growing number of programs in object-oriented languages, such as Java and C#, that require garbage collection. Garbage collection traces and simulation speed up research by enabling deeper understandings of object lifetime behavior and quick exploration and design o ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
Programmers are writing a rapidly growing number of programs in object-oriented languages, such as Java and C#, that require garbage collection. Garbage collection traces and simulation speed up research by enabling deeper understandings of object lifetime behavior and quick exploration and design of new garbage collection algorithms. When generating perfect traces, the brute-force method of computing object lifetimes requires a whole-heap garbage collection at every potential collection point in the program. Because this process is prohibitively expensive, researchers often use granulated traces by collecting only periodically, for example, every 32 KB of allocation. We extend the state of the art for simulating garbage collection algorithms in two ways. First, we develop a systematic methodology for simulation studies of copying garbage collection and present results showing the effects of trace granularity on these simulations. We show that trace granularity often distorts simulated garbage collection results compared with perfect traces. Second, we present and measure the performance of a new algorithm called Merlin for computing object lifetimes.
Liveness of heap data for functional programs
- In HAV 2007: Heap Analysis and Verification Workshop. 64–80. http://research.microsoft.com/ ∼ jjb
, 2007
"... Replace this file withprentcsmacro.sty for your meeting, or withentcsmacro.sty for your meeting. Both can be ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
Replace this file withprentcsmacro.sty for your meeting, or withentcsmacro.sty for your meeting. Both can be

