2019
DOI: 10.1007/s10664-019-09731-8
|View full text |Cite
|
Sign up to set email alerts
|

Memory and resource leak defects and their repairs in Java projects

Abstract: Despite huge software engineering efforts and programming language support, resource and memory leaks are still a troublesome issue, even in memory-managed languages such as Java. Understanding the properties of leak-inducing defects, how the leaks manifest, and how they are repaired is an essential prerequisite for designing better approaches for avoidance, diagnosis, and repair of leak-related bugs.We conduct a detailed empirical study on 491 issues from 15 large opensource Java projects. The study proposes … Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
12
0

Year Published

2019
2019
2024
2024

Publication Types

Select...
5
3
1

Relationship

0
9

Authors

Journals

citations
Cited by 29 publications
(12 citation statements)
references
References 68 publications
0
12
0
Order By: Relevance
“…A container is an object that contains references to other objects, and these may be related to Java data structures like lists and sets. The aging problem occurs when the objects' references inside these containers are inserted but never removed [29,30,31]. The accumulation of unused objects causes the increase of the GC overhead (which consumes CPU to inspect the heap, and slows down the entire process), and eventually the exhaustion of heap memory up to software hang or crash.…”
Section: Overviewmentioning
confidence: 99%
“…A container is an object that contains references to other objects, and these may be related to Java data structures like lists and sets. The aging problem occurs when the objects' references inside these containers are inserted but never removed [29,30,31]. The accumulation of unused objects causes the increase of the GC overhead (which consumes CPU to inspect the heap, and slows down the entire process), and eventually the exhaustion of heap memory up to software hang or crash.…”
Section: Overviewmentioning
confidence: 99%
“…Memory leaks [35] in managed languages occur if objects no longer needed remain reachable from garbage collection roots (e.g., static fields or local variables) due to programming errors. For example, objects may accumulate over time when a developer forgets to remove them from long-living data structures [115].…”
Section: Memory Leaksmentioning
confidence: 99%
“…received the labels 'Detects Growth In Chart' as well as 'Recognizes Growth as Problem'. We adopted and adjusted an iterative labelling process [35] that is similar to Open Coding [100]. First, a set of possible observation labels and statement labels had to be formed.…”
Section: Study Process and Data Collectionmentioning
confidence: 99%
“…Popular tools for findings memory leaks (i.e., objects that have not been deallocated) in C and C++ software include Valgrind (Nethercote and Seward, 2007) and AddressSanitizer (Serebryany et al, 2012), which traverse at run-time the heap memory, starting from the program's root set of references (e.g., pointers on the stack) and following the pointers inside the objects to find the unreachable (i.e., leaked) ones. For the Java programming language, which avoids memory leaks with automated garbage collection, research has been focused on memory bloat, i.e., unnecessary objects that are still referenced by the program but will not be used, thus increasing the load for memory management and impacting on the performance of the program (Ghanavati et al, 2019). Xu and Rountev (2013) and Jump and McKinley (2007) analyzed in detail memory bloat issues caused by the accumulation of unused objects in Java containers (e.g., the HashMap and ArrayList data structures), and proposed techniques for analyzing the heap growth over time to identify objects suspected of bloating memory, based on the age, the time-to-last-access, and the contribution to memory consumption.…”
Section: Related Workmentioning
confidence: 99%