An understanding of native memory is essential when you design and run large Java applications. The lack of predictable behaviour means there's no one simple way to identify native-memory exhaustion. Instead, you need to use data from the OS and from the Java runtime to confirm the diagnosis. To get the best performance from your Java application, you must understand how the application affects the Java runtime's native-memory use.