Software Complexity and its Impact on Software Reliability
IEEE Transactions on Software Engineering
Communications of the ACM
Java Platform Performance: Strategies and Tactics
Java Platform Performance: Strategies and Tactics
The Java Programming Language
Data size optimizations for java programs
Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systems
Heap compression for memory-constrained Java environments
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Program Complexity and Programmer Productivity
IEEE Transactions on Software Engineering
LeakSurvivor: towards safely tolerating memory leaks for garbage-collected languages
ATC'08 USENIX 2008 Annual Technical Conference on Annual Technical Conference
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Proceedings of the 14th international conference on Architectural support for programming languages and operating systems
Automatic Generation of Runtime Failure Detectors from Property Templates
Software Engineering for Self-Adaptive Systems
KAL: kernel-assisted non-invasive memory leak tolerance with a general-purpose memory allocator
Software—Practice & Experience
Hi-index | 0.00 |
Garbage collectors automatically free memory previously allocated by applications. Generally, they discard unreachable objects from memory, leaving reachable objects intact. However, object reachability does not necessarily imply usability, as an object may be obsolete and still reachable. Such objects are usually referred to as loitering objects. Loitering objects introduce a form of memory leak in a Java application. Predicting, tracing and eliminating loitering objects is a difficult problem. In this paper we address this problem. We present a self-healing approach for dealing with loitering objects. Specifically, the paper proposes an algorithm that can be integrated within the Java garbage collector. The algorithm prevents memory leaks resulting from loitering objects by "paging" suspected live objects to disk and reloading them if they are required. As a proof-of-concept, we have implemented and validated the algorithm for the Java Virtual Machine. This could be a first step towards genuine self-healing of memory management problems.