The average Java developer is not completely aware of the Java Virtual Machine’s different areas and their roles. When you see ‘java.lang.StackOverflowError’ or ‘Java.lang.OutOfMemoryError’ do you know to what they pertain?
This post offers two articles for consideration:
1. The JVM architecture explained:
2. Java Memory Profiling Simplified. (Referencing profilers like JVMs build in VisualVM)
If Eden Space, Survivor Space, YoungGen, OldGen, PermGen are faint or foreign concepts, this is a good primer.