Optimal Heap Limits for Reducing Browser Memory Use

  title={Optimal Heap Limits for Reducing Browser Memory Use},
  author={Marisa Kirisame and Pranav Shenoy and Pavel Panchekha},
Garbage collected language runtimes must carefully tune heap limits to reduce garbage collection time and memory usage. However, there’s a trade-off: a lower heap limit reduces memory use but increases garbage collection time. Classic methods for setting heap limits include manually-tuned heap limits and multiple-of-working-memory rules of thumb. But because it’s a trade-off, it’s not clear what heap limit rule is best or how even to compare them. We address this problem with a new framework… 

Figures and Tables from this paper


Automatic heap sizing: taking real memory into account
This work presents an automatic heap-sizing algorithm applicable to different garbage collectors with only modest changes, and shows that its adaptive heap sizing algorithm can substantially reduce running time over fixed-sized heaps.
Prioritized garbage collection: explicit GC support for software caches
This paper presents prioritized garbage collection, a cooperative programming language and runtime solution to this problem, and uses this API to implement a space-aware least-recently-used cache, called a Sache, that is a drop-in replacement for existing caches, such as Google's Guava library.
Quantifying the performance of garbage collection vs. explicit memory management
The results quantify the time-space tradeoff of garbage collection: with five times as much memory, an Appel-style generational collector with a non-copying mature space matches the performance of reachability-based explicit memory management.
Controlling garbage collection and heap growth to reduce the execution time of Java applications
Experimental results demonstrate that when compared with the existing approach used in the standard BDW collector, this new strategy can significantly reduce application execution times and be applied in a number of high-performance computing and server environments.
Waste not, want not: resource-based garbage collection in a shared environment
The design of the memory management system is described, it is shown how it can be added to existing VMs with little effort, and it is document that it has almost no impact on performance when memory is plentiful.
Garbage collection without paging
This bookmarking collector cooperates with the virtual memory manager to guide its eviction decisions, and using summary information recorded from evicted pages, the collector can perform in-memory full-heap collections.
Program-level adaptive memory management
This work demonstrates the presence of an optimal heap size for a number of applications and introduces a scheme which adaptively finds this good heap size by adapting itself dynamically, independent of the underlying main memory size, code optimizations, and garbage collection algorithm.
Concurrent marking of shape-changing objects
Novel wait-free object snapshotting and lock-based concurrent marking algorithms are introduced for unsafe shape changes in V8 and it is proved that they preserve key invariants.
An advisor for flexible working sets
A memory-use model of virtual memory working sets for garbage-collected systems and databases with block cache buffers is presented, and a method that may be used by virtual memory managers to advise programs on how to adjust their working sets is proposed.
The judgment of forseti: economic utility for dynamic heap sizing of multiple runtimes
The FORSETI system is introduced, which is a principled approach for holistic memory management that enables dramatic reductions (up to 5x) in heap footprint without compromising application execution times using a standard Java managed runtime.