How can autoboxing silently slow down a hot loop or cause a subtle bug?
Reviewed by Gurusankar M.
Short Answer
Autoboxing creates a wrapper object per operation. In a hot loop (e.g. a Long accumulator) that means millions of allocations and GC pressure. It also breaks == comparisons outside the Integer cache (-128..127).
On this page
Concept Made Simple
Coffee Chat Question
“How can autoboxing silently slow down a hot loop or cause a subtle bug?”
Remember It Faster
Mind Map Answer
A Long sum = 0L; sum += i; re-boxes on every iteration — each += unboxes, adds, and allocates a new Long. Use the primitive long and the allocations vanish.
- Boxed Long sum
- millions of objects → GC churn
- primitive long sum
- zero allocations
- Integer == trap
- cached only -128..127
Learn by Doing
Hands-on Keyboard
Long boxed = 0L;
for (long i = 0; i < 1_000_000; i++) boxed += i; // boxes 1M times
long fast = 0L;
for (long i = 0; i < 1_000_000; i++) fast += i; // no boxing- Time:
- O(n) both — but boxed allocates O(n) objects
Think Beyond the Expected
What If?
Why does Integer a = 1000, b = 1000; a == b print false but 100 prints true?
The Integer cache reuses one instance for -128..127, so == is true there. 1000 is outside the cache, so two distinct objects are created and == compares references → false.
Real World
A reporting job summing order totals into a `Long` ran 4x slower and triggered frequent young-GC; switching the accumulator to `long` removed the allocation storm.
Interviewer's Expectation
Keywords they're listening for:
- wrapper allocation cost
- GC pressure in loops
- Integer cache -128..127
- == vs .equals for wrappers
Common Mistakes
- Using wrapper types for loop counters/accumulators
- Comparing wrappers with ==
- Unboxing a possibly-null Integer into an int
Best Practices
- Prefer primitives in hot paths and accumulators
- Use .equals()/Objects.equals for wrapper comparison
- Guard against null before unboxing
Follow-up Questions
- Where does the Integer cache come from and can you tune it?
- Why can unboxing a null Integer throw NPE?
- When are wrappers unavoidable (generics, collections)?
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: Primitives (Core Java) Interview question: "How can autoboxing silently slow down a hot loop or cause a subtle bug?" 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.
Was this answer helpful?
Affiliate links
Tools for Your Developer Workspace
Equipment for a comfortable, productive setup.
As an Amazon Associate I earn from qualifying purchases.
- MonitorView on Amazon : BenQ EW2790U 27-inch Monitor (opens in a new tab)
BenQ EW2790U 27-inch Monitor
- LaptopView on Amazon : Acer Aspire One Laptop (opens in a new tab)
Acer Aspire One Laptop
- Office ChairView on Amazon : Wakefit Gravita Ergonomic Office Chair (opens in a new tab)
Wakefit Gravita Ergonomic Office Chair