Easy👤 0-2 years👤 3-5 years 1 min read

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

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.

Coffee Chat Question

Concept Made Simple

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

🧠Mind Map Answer

Remember It Faster

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

🔥What If?

Think Beyond the Expected

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 sharedstack/PC per-threadStackOverflow vs OOMmetaspace 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

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

🧩Related Technologies

Metaspace-Xss-Xmxjcmd

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?

Support our platform by exploring our recommended products.

As an Amazon affiliate, purchases through these links may earn us a small commission — at no extra cost to you. It helps keep Full Stack Interview Guru free.

Related Questions