If you are interested in learning why our Java applications might exhibit performance problems, abnormal memory usage growth or sometimes even fail with OutOfMemoryError exceptions, and you want to learn how these problems can be diagnosed and eradicated, then this course is for you! This course talks about different memory issues that we may come across with our java applications, and goes in detail on how we should approach these issues, what diagnostic tools we should use to collect the interesting diagnostic data, and what tools can help us analyze that data to get to the bottom of these memory problems.
This learning path has three lessons, and in these lessons we will discover various aspects of memory management, garbage collectors implemented in the JVM, and what kind of memory problems we might encounter with our java applications. We will explore various diagnostic and troubleshooting tools that can help us in dealing with the memory related issues.
Lets’ start troubleshooting!
An Oracle Cloud account is not necessary for this course. However, if you're curious to try the cloud, trial versions are available:
Hotspot JVM Memory Management
Memory is managed automatically in the HotSpot JVM. The Garbage Collectors in the JVM manage memory freeing the Java programmers from worrying about the object de-allocations. In order to troubleshoot memory related problems, it is important to first understand how memory management works.
This lesson will discuss the process of automatic memory management, and by using simple examples will explain how memory is managed in the HotSpot JVM. We will also talk about the concept of generational garbage collection, and explore the different memory spaces and garbage collectors implemented in the HotSpot JVM. Towards the end of this lesson we will go though the garbage collectors related changes that have been made between different Java versions.
As you progress through the materials, you will notice that the Oracle Learning Library adds a green check mark next to each item that you have accessed (You must be logged in). This helps you track your progress.
Dissecting Memory Problems
How do we figure out that an application is going through memory problems? In this lesson, we will talk about the symptoms in an application behavior that can give us an indication about that. For example, poor performance of an application could be the result of a memory leak in the application!
We’ll also see what could be the causes of memory issues, and will talk in detail about the various OutOfMemoryError exception messages that the JVM can report when any of its memory pools runs out of space.
Diagnostic Data Collection and Analysis Tool
By now you have learned how memory is managed in the HotSpot JVM, what are the different memory pools and the garbage collectors implemented in it, what kind of memory issues we might encounter, what could be their causes and how they can impact the application behavior. But what do we do when we have determined that a memory leak exists in our application? This lesson explains exactly that!
In this lesson, we will learn which diagnostic data can help us get insights into memory problems. We will explore the diagnostic tools that we can use to collect the useful diagnostic data, and also go over the debugging and troubleshooting tools that can be used to analyze the collected data. By looking at examples, we will learn methods and techniques to troubleshoot and get to the root cause of various memory issues.
Enjoy the digging!