Chapter 9. Java and Memory
This chapter is an introduction to handling memory in the Java platform. We will cover:
-
Introduction to automatic memory management
-
The basic mark-and-sweep garbage collection (GC) algorithm
-
How the HotSpot JVM optimizes GC based on the lifetime of the object
-
Overview of HotSpot’s default collector
-
Alternate collectors
While it is possible to develop Java applications without any knowledge of the memory management subsystem, an awareness of the topic beyond “a wizard did it” is beneficial for most developers. The subject of garbage collection, in particular, is a deep one. It has a long history and yet is also the continued subject of active and novel academic research. Java’s place within that history is an important one, as the JVM provides the best available general-purpose garbage collected runtime.
Basic Concepts of Automatic Memory Management
The Java platform provides a form of automatic memory management, which means that the memory occupied by an object is automatically reclaimed when the object is no longer needed. Conceptually, there are two basic approaches to automatic memory management: garbage collection (which is what Java and JavaScript use) and reference counting (used by Python and Apple’s Swift language).1
Some other popular languages do not provide automatic memory management—for example, C and C++ use manual management and Rust uses a novel compile-time approach called ownership and borrowing.2
For obvious reasons, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access