Resco: Automatic Collection of Leaked Resources

Ziying DAI
Xiaoguang MAO
Xiaomin WAN
Kerong BEN

IEICE TRANSACTIONS on Information and Systems   Vol.E96-D    No.1    pp.28-39
Publication Date: 2013/01/01
Online ISSN: 1745-1361
DOI: 10.1587/transinf.E96.D.28
Print ISSN: 0916-8532
Type of Manuscript: PAPER
Category: Software Engineering
resource leaks,  resource collection,  fault tolerance,  monitoring,  

Full Text: PDF>>
Buy this Article

A garbage collector relieves programmers from manual memory management and improves productivity and program reliability. However, there are many other finite system resources that programmers must manage by themselves, such as sockets and database connections. Growing resource leaks can lead to performance degradation and even program crashes. This paper presents the automatic resource collection approach called Resco (RESource COllector) to tolerate non-memory resource leaks. Resco prevents performance degradation and crashes due to resource leaks by two steps. First, it utilizes monitors to count resource consumption and request resource collections independently of memory usage when resource limits are about to be violated. Second, it responds to a resource collection request by safely releasing leaked resources. We implement Resco based on a Java Virtual Machine for Java programs. The performance evaluation against standard benchmarks shows that Resco has a very low overhead, around 1% or 3%. Experiments on resource leak bugs show that Resco successfully prevents most of these programs from crashing with little increase in execution time.