EasyExperience level: 0-2 years · 3-5 years1 min read

What are the main JVM memory areas, and which are shared vs per-thread?

Reviewed by Gurusankar M.

Asked inInfosysCognizantAccentureAmazon
#memory areas#heap#stack#metaspace#runtime data areas
Report issue

Short Answer

Shared across threads: Heap (objects) and Metaspace (class metadata). Per-thread: the JVM Stack (frames, locals), PC register, and native method stack. Most OutOfMemory issues are Heap or Metaspace; StackOverflowError is the per-thread stack.

On this page

Concept Made Simple

Coffee Chat Question

“What are the main JVM memory areas, and which are shared vs per-thread?”

Remember It Faster

Mind Map Answer

Heap (shared)
all objects + arrays
Metaspace (shared)
class metadata (native mem)
Stack (per-thread)
frames, locals, partial results
PC / native stack
per-thread bookkeeping

Think Beyond the Expected

What If?

Deep recursion throws StackOverflowError but the heap is fine — which area, and the fix?

That's the per-thread JVM stack overflowing (too many frames). Fix the recursion (add a base case / convert to iteration) or, rarely, raise -Xss. It's unrelated to heap size — bumping -Xmx won't help.

Real World

Knowing which area is exhausted routes the fix: Heap OOM → leak/sizing, Metaspace OOM → classloader leak/too many classes, StackOverflow → recursion. Misdiagnosing wastes incident time.

Interviewer's Expectation

Keywords they're listening for:

  • heap & metaspace shared
  • stack/PC per-thread
  • StackOverflow vs OOM
  • metaspace is native memory

Common Mistakes

  • Raising -Xmx for a StackOverflowError
  • Thinking Metaspace is part of the heap
  • Ignoring per-thread stack cost when creating many threads

Best Practices

  • Match the fix to the exhausted area
  • Bound recursion; prefer iteration for deep structures
  • Monitor both heap and metaspace

Follow-up Questions

  1. Where do String literals and static fields live?
  2. Why did PermGen become Metaspace?
  3. What does -Xss control?

Continue Learning with AI

Take this question deeper with your favourite AI assistant. Pick a depth, copy the prompt, or open it directly — AI is your learning companion, not a shortcut.

Plain-language foundations

I'm preparing for a software engineering interview and want to understand this from scratch, as a beginner.

Topic: Memory Areas (JVM)
Interview question: "What are the main JVM memory areas, and which are shared vs per-thread?"

Please:
1. Explain the core idea in simple, plain language, using an everyday analogy.
2. Define any technical terms you use.
3. Walk through one small, concrete example.
4. Finish with a single sentence I can easily remember.

Keep the tone friendly and assume I'm new to this topic.
Open inChatGPTGeminiClaude

Was this answer helpful?

Affiliate links

Equipment for a comfortable, productive setup.

As an Amazon Associate I earn from qualifying purchases.