Abstract

Java is gaining popularity in software development. It is widely used in network computing and embedded systems because it offers several key advantages such as safe programming, code verification and checking, automatic memory management, and significant support from the computing industry. As the popularity of Java has rapidly increased, research on Java application performance is continuously of interest to the research community. This paper aims to evaluate and optimize the order of Java objects in memory in order to give a good impact on Java application performance. We evaluate how the order of Java objects in memory affects cache performance, DTLB performance and Java application execution time. This work is motivated by the facts that Java programs create many objects dynamically on the heap, access and mutate them during runtime. These objects might be spread across the memory since they are not necessarily resided in adjacent memory locations. To show how the order of objects in memory affects Java application performance, we use the garbage collector, automatic memory management in Java Virtual Machine (JVM), to reorganize the order of live objects during garbage collection time. We implemented two different object ordering schemes upon the invocation of copying garbage collector: Bread First (BF) scheme and Depth First (DF) scheme. Our experiment results show that Java execution time, cache misses and DTLB misses vary by 3–16%, 5–20% and 9–21% respectively due to BF and DF schemes. We optimize the order of frequently accessed objects and the results show that this optimized scheme has a better impact on Java application performance compared with the DF scheme.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call