Results 1 - 10
of
13
A Linearly Typed Assembly Language
- In Workshop on Types in Compilation
"... Today's type-safe low-level languages rely on garbage collection to recycle heap-allocated objects safely. We present LTAL, a safe, low-level, yet simple language that "stands on its own": it guarantees safe execution within a fixed memory space, without relying on external run-time support. We demo ..."
Abstract
-
Cited by 136 (35 self)
- Add to MetaCart
Today's type-safe low-level languages rely on garbage collection to recycle heap-allocated objects safely. We present LTAL, a safe, low-level, yet simple language that "stands on its own": it guarantees safe execution within a fixed memory space, without relying on external run-time support. We demonstrate the expressiveness of LTAL by giving a type-preserving compiler for the functional core of ML. But this independence comes at a steep price: LTAL's type system imposes a draconian discipline of linearity that ensures that memory can be reused safely, but prohibits any useful kind of sharing. We present the results of experiments with a prototype LTAL system that show just how high the price of linearity can be.
Age-Based Garbage Collection
- In Proceedings of SIGPLAN 1999 Conference on Object-Oriented Programming, Languages, & Applications
, 1999
"... Modern generational garbage collectors look for garbage among the young objects, because they have high mortality; however, these objects include the very youngest objects, which clearly are still live. We introduce new garbage collection algorithms, called age-based, some of which postpone consider ..."
Abstract
-
Cited by 45 (13 self)
- Add to MetaCart
Modern generational garbage collectors look for garbage among the young objects, because they have high mortality; however, these objects include the very youngest objects, which clearly are still live. We introduce new garbage collection algorithms, called age-based, some of which postpone consideration of the youngest objects. Collecting less than the whole heap requires write barrier mechanisms to track pointers into the collected region. We describe here a new, efficient write barrier implementation that works for age-based and traditional generational collectors. To compare several collectors, their configurations, and program behavior, we use an accurate simulator that models all heap objects and the pointers among them, but does not model cache or other memory effects. For object-oriented languages, our results demonstrate that an older-first collector, which collects older objects before the youngest ones, copies on average much less data than generational collectors. Our resul...
The Structure and Performance of Interpreters
- In Architectural Support for Programming Languages and Operating Systems (ASPLOS-VII
, 1996
"... Interpreted languages have become increasingly popular due to demands for rapid program development, ease of use, portability, and safety. Beyond the general impression that they are "slow," however, little has been documented about the performance of interpreters as a class of applications. This pa ..."
Abstract
-
Cited by 45 (1 self)
- Add to MetaCart
Interpreted languages have become increasingly popular due to demands for rapid program development, ease of use, portability, and safety. Beyond the general impression that they are "slow," however, little has been documented about the performance of interpreters as a class of applications. This paper examines interpreter performance by measuring and analyzing interpreters from both software and hardware perspectives. As examples, we measure the MIPSI, Java, Perl, and Tcl interpreters running an array of micro and macro benchmarks on a DEC Alpha platform. Our measurements of these interpreters relate performance to the complexity of the interpreter's virtual machine and demonstrate that native runtime libraries can play a key role in providing good performance. From an architectural perspective, we show that interpreter performance is primarily a function of the interpreter itself and is relatively independent of the application being interpreted. We also demonstrate that high-level i...
Quantifying the performance of garbage collection vs. explicit memory management
- in: Proc. ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA
, 2005
"... Garbage collection yields numerous software engineering benefits, but its quantitative impact on performance remains elusive. One can compare the cost of conservative garbage collection to explicit memory management in C/C++ programs by linking in an appropriate collector. This kind of direct compar ..."
Abstract
-
Cited by 31 (5 self)
- Add to MetaCart
Garbage collection yields numerous software engineering benefits, but its quantitative impact on performance remains elusive. One can compare the cost of conservative garbage collection to explicit memory management in C/C++ programs by linking in an appropriate collector. This kind of direct comparison is not possible for languages designed for garbage collection (e.g., Java), because programs in these languages naturally do not contain calls to free. Thus, the actual gap between the time and space performance of explicit memory management and precise, copying garbage collection remains unknown. We introduce a novel experimental methodology that lets us quantify the performance of precise garbage collection versus explicit memory management. Our system allows us to treat unaltered Java programs as if they used explicit memory management by relying
Understanding and Improving the Performance of Modern Programming Languages
, 1997
"... Features of modern programming languages such as objects, method invocations, and automatic memory management have important software engineering benefits. Unfortunately, each of these features also have a performance overhead, and thus programs written in modern languages typically run slower than ..."
Abstract
-
Cited by 7 (3 self)
- Add to MetaCart
Features of modern programming languages such as objects, method invocations, and automatic memory management have important software engineering benefits. Unfortunately, each of these features also have a performance overhead, and thus programs written in modern languages typically run slower than those written in traditional languages. This dissertation describes and evaluates fast techniques for reducing the overhead of two features of modern programming languages: objects and method invocations. To address the overhead of objects, and more specifically linked structures, we have designed a new alias analysis, type-based alias analysis (TBAA), which uses types to disambiguate memory references in Modula-3 programs. TBA...
Real-Time Performance of Dynamic Memory Allocation Algorithms
- 14 th Euromicro Conference on Real-Time Systems (ECRTS’02
, 2002
"... Dynamic memory management is an important aspect of modern software engineering techniques. However, developers of real-time systems avoid to use it because they fear that the worst-case execution time of the dynamic memory allocation routines is not bounded or is bounded with a too important bound. ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
Dynamic memory management is an important aspect of modern software engineering techniques. However, developers of real-time systems avoid to use it because they fear that the worst-case execution time of the dynamic memory allocation routines is not bounded or is bounded with a too important bound. The degree to which this concern is valid is quantified in this paper, by giving detailed average and worst-case measurements of the timing performances of a comprehensive panel of dynamic memory allocators (sequential fits, indexed fits, segregated fits, buddy systems). For each allocator, we compare its worstcase behavior obtained analytically, with (i) the worst timing behavior observed by executing real and synthetic workloads, (ii) its average timing performance. We also quantify on a real workload (a MPEG player) the impact of the allocators worst-case allocation times on the workload end-to-end execution time. The results provide a guideline to developers of real-time systems to choose whether to use dynamic memory management or not, and which dynamic allocation algorithm should be preferred from the viewpoint of predictability.
Caching strategies for improving generational garbage collection in Smalltalk
- North Carolina State University
, 2003
"... Abstract. In generational garbage collection, the youngest generation of the heap is frequently traversed during garbage collection. Due to randomness of the traversal, memory access patterns are unpredictable and cache performance becomes crucial to garbage-collection efficiency. Our proposal to im ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Abstract. In generational garbage collection, the youngest generation of the heap is frequently traversed during garbage collection. Due to randomness of the traversal, memory access patterns are unpredictable and cache performance becomes crucial to garbage-collection efficiency. Our proposal to improve cache performance of garbage collection is to “pin ” the youngest generation (sometimes called the nursery) in the cache, converting all nursery accesses to cache hits. To make the nursery fit inside the cache, we reduce its size, and, to prevent its eviction from the cache, we configure the operating system’s pagefault handler to disallow any page allocation that would cause cache conflicts to the nursery. We evaluated our scheme on a copying-style generational garbage collector using IBM VisualAge Smalltalk and Jikes research virtual machine. Our simulation results indicate that the increase in frequency of garbage collection due to a smaller nursery is overshadowed by gains of converting all nursery accesses to cache hits. 1
A Smalltalk Memory Profiler and its Performance Enhancement
- Presented at OOPSLA ’97 Memory Managemnt and Garbage Collection Workshop
, 1997
"... . A profiler was constructed to monitor memory allocations in IBM Smalltalk program and report them to the user through a graphical display. Allocation events were processed through a pipeline that filtered them to allow the user to zero in on allocations from any class or process. The initial imple ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
. A profiler was constructed to monitor memory allocations in IBM Smalltalk program and report them to the user through a graphical display. Allocation events were processed through a pipeline that filtered them to allow the user to zero in on allocations from any class or process. The initial implementation slowed the running of monitored programs by two orders of magnitude. Four performance enhancements resulted in a speed improvement of approximately eight times for the usual situation in which the user is monitoring performance in specific classes. Work is underway to improve the performance further. 1. Introduction Performance has always been a concern with object-oriented software. Much attention has been focused on garbage collection [CM 96, DTM 95, Zorn 93, Ungar 87] and method dispatch [AGS 94, Driesen 93, HC 92, Rose 88], but little work has been done on other aspects of performance. We believe that important performance gains can be achieved by reducing the amount of memory...
Quantifying and Improving the Performance of Garbage Collection
, 2006
"... Computer Science To Sarah for reminding me of everything I can do and to Shoshanna for inspiring me to do more. ACKNOWLEDGMENTS I am most grateful to my advisor, Emery Berger, for everything he has done throughout this thesis. I appreciate his guidance, suggestions, and inspiration. I feel especiall ..."
Abstract
- Add to MetaCart
Computer Science To Sarah for reminding me of everything I can do and to Shoshanna for inspiring me to do more. ACKNOWLEDGMENTS I am most grateful to my advisor, Emery Berger, for everything he has done throughout this thesis. I appreciate his guidance, suggestions, and inspiration. I feel especially fortu-nate for the patience he has shown with me throughout all the twists and turns my life took getting through this dissertation. I must also thank Eliot Moss and Kathryn McKinley for their leadership and support. I will be forever grateful that they took a chance on a student with a less-than-stellar aca-demic record and provided me with a fertile, inspiring research environment. They are both very knowledgeable and I benefited from our discussions in a myriad of ways. They have also served as members of my committee and I appreciate their helpful comments and sug-gestions. Thanks also to Scott Kaplan, another member of my committee, for his advice and feedback.

