Bloat, specifically, containers's bloat is a potential JAVA performance bottleneck. We identify five memory compaction techniques that can be used to reduce the footprint of the small objects that make containers. Using these techniques, we describe methods for more efficient encoding of some JRE's ubiquitous data structures. For HashMap and HashSet the fused hashing encoding method, reduces memory overhead by 20%-45% on a 32-bit environment and 45%-65% on a 64-bit environment. This encoding guarantees these figures as lower bound regardless of the distribution of keys in hash buckets. A more opportunistic squashed hashing encoding method, achieves expected savings of 25%-70% on a 32-bit environment and 30%-75% on a 64-bit environments. For TreeMap and TreeSet we employ these five techniques, and capitalizing further on the special properties of the red-black balanced tree, we can reduce the overhead of tree nodes by 43%-55% on a 32-bit environment and 59%-61% on a 64-bit environment.
The extra abstraction layer posed by the virtual machine, the JIT compilation cycles and the asynchronous garbage collection are the main reasons that make the benchmarking of Java code a delicate task. The primary weapon in battling these is replication: "billions and billions of runs", is phrase sometimes used by practitioners. This paper describes a case study, which consumed hundreds of hours of CPU time, and tries to characterize the inconsistencies in the results we encountered.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.