[JAVA] ๊ฐ€๋ฐ”์ง€ ์ปฌ๋ ‰ํ„ฐ

๊ฐœ์š” 

  1. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 
  2. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์ดํ•ด 
  3. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋™์ž‘ ๋ฐฉ๋ฒ• 

https://ybdeveloper.tistory.com/36

 

[JAVA] JVM์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ?

JVM์ด๋ž€? ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (Java Virtual Machine)์˜ ์•ฝ์ž๋กœ์„œ, ์ง์—ญํ•˜์ž๋ฉด '์ž๋ฐ”๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ€์ƒ ๊ธฐ๊ณ„'๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. '๊ฐ€์ƒ ๊ธฐ๊ณ„'๋Š” SW๋กœ ๊ตฌํ˜„๋œ HW๋ฅผ ๋œปํ•˜๋Š” ๋„“์€ ์˜๋ฏธ์˜ ์šฉ์–ด์ด๋ฉฐ, ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ์ด ํ–ฅ..

ybdeveloper.tistory.com

 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ?


C๋‚˜ C++ Language๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š”, OS ๋ ˆ๋ฒจ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— free()๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ํ• ๋‹น๋ฐ›์•˜๋˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด์ œํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ , ํ˜„์žฌ ์‹คํ–‰์ค‘์ด๋˜ ํ”„๋กœ๊ทธ๋žจ์— ์น˜๋ช…์ ์ธ ํ”ผํ•ด๋ฅผ ์ž…ํž ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์—, ์ž๋ฐ”๋Š” OS์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜์ง€ ์•Š๊ณ , JVM์„ ์ด์šฉํ•ด์„œ ๊ฐ„์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. JVM์€ C๋กœ ์ž‘์„ฑ๋œ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ธ๋ฐ, JVM์ด ์•Œ์•„์„œ free()๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ผ๋Š” ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์„ ์ „๋ถ€ JVM์—๊ฒŒ ๋Œ€์‹  ๋งก๊ฒจ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

์ด๋•Œ JVM์ด ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค.

 

 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜


๊ฐœ๋ฐœ์ž๊ฐ€ ํž™์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ , ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ๋‹ด๋‹นํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์€ ์•„์ฃผ ๋‹จ์ˆœํ•œ ๊ทœ์น™์„ ์ ์šฉ์‹œ์ผœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ™•๋ณด์‹œํ‚ต๋‹ˆ๋‹ค. 

Heap ์˜์—ญ์˜ ์˜ค๋ธŒ์ ํŠธ ์ค‘ Stack์—์„œ ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅํ•œ (Unreachable) ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค. 

 

์ฆ‰, ์–ด๋– ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜๋„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์ง€ ์•Š์€ Heap ์˜์—ญ์˜ ์˜ค๋ธŒ์ ํŠธ๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.  ๋งŒ์•ฝ Stringํ˜• ๋ฐ์ดํ„ฐ๋“ค์— ๋Œ€ํ•ด ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.

 

1
2
3
4
5
String a = "Lee";
 
+= "yunbok"// ์—ฌ๊ธฐ์„œ a์—๊ฒŒ ๋ฌด์Šจ์ผ์ด ๋ฒŒ์–ด์งˆ๊นŒ์š”?
 
 
 

 

์ฒซ๋ฒˆ์งธ ๋ผ์ธ์—์„œ ๋ฒŒ์–ด์ง€๋Š” ์ผ์€ Stack ์˜์—ญ์— a ์ฐธ์กฐ ๋ณ€์ˆ˜๊ฐ€ ์ €์žฅ๋˜๊ณ , Heap ์˜์—ญ์—๋Š” "Lee"๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์ €์žฅ๋˜๊ฒ ์ฃ ? 

๊ทธ ๋‹ค์Œ ๋ผ์ธ์—์„œ a์™€ "yunbok" ๊ฐ„์— ๋ง์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ค์ผ์ด ๋ฒŒ์–ด์งˆ๊นŒ์š”? "Lee"๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์œ„์น˜์— "yunbok"์„ ์ถ”๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์•„์˜ˆ ๋‹ค๋ฅธ ์ฃผ์†Œ๊ฐ’์— "Leeyunbok"์„ ํ• ๋‹น์‹œํ‚จ ํ›„, ์ฐธ์กฐ ๋ณ€์ˆ˜ a๊ฐ€ ํ•ด๋‹น ๋ฌธ์ž์—ด์„ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. 

"Leeyunbok"๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋” ์ด์ƒ ์•„๋ฌด๋„ ์•ˆ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ "Lee"์— ํฌ์ปค์Šค๋ฅผ ๋งž์ถ”์–ด ๋ด…์‹œ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋„๋‹ฌ ๋ถˆ๊ฐ€๋Šฅํ•œ. ์ฆ‰, Unreachable ์˜ค๋ธŒ์ ํŠธ๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ด์ œ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋ชฉํ‘œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด์ง€์š”.

JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๋Š” Unreachable ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •์€ Mark and Sweep ์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. JVM์˜ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ์Šคํƒ์˜ ๋ชจ๋“  ๋ณ€์ˆ˜๋“ค์„ ์Šค์บ”ํ•˜๋ฉฐ ๊ฐ๊ฐ ์–ด๋–ค ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š”์ง€ ์ฐพ๋Š” ๊ณผ์ •์ด Mark์ž…๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋‹จ๊ณ„์ธ Marking ์ž‘์—…์„ ์œ„ํ•ด ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ •์ง€๋˜๋Š”๋ฐ ์ด๋Ÿฌํ•œ ์ด์œ  ๋•Œ๋ฌธ์—, ์ˆ˜๋™์œผ๋กœ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ง„ํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” System.gc()๋ฅผ ์ƒ๊ฐ์—†์ด ํ˜ธ์ถœํ•˜๋ฉด ์•ˆ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ unreachable ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ํž™์—์„œ ์ œ๊ฑฐํ•˜๋Š” ๊ณผ์ •์ด Sweep ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ๊ณผ์ •์€ garbage ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค์„ mark ํ•ด๋†“๊ณ  ๊ทธ ์™ธ์˜ ๊ฒƒ์€ ๋ชจ๋‘ ์ง€์šฐ๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

Heap์˜ ์„ธ๋ถ„ํ™”


http://www.waitingforcode.com/off-heap/on-heap-off-heap-storage/read

Heap์€ ์œ„ ์‚ฌ์ง„ ์ฒ˜๋Ÿผ Young Generation, Old Generation์œผ๋กœ ํฌ๊ฒŒ ๋‘๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ง€๊ณ , Young Generation์€ ๋˜๋‹ค์‹œ Eden, Survivor0,1๋กœ ์„ธ๋ถ„ํ™” ๋˜์–ด์ง‘๋‹ˆ๋‹ค. ๊ฐ ์˜์—ญ์˜ ์—ญํ• ์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ์„ค๋ช…ํ•˜๋ฉฐ ์–ธ๊ธ‰ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ํ”„๋กœ์„ธ์Šค 


  1. ์ƒˆ๋กœ์šด ์˜ค๋ธŒ์ ํŠธ๋Š” Eden ์˜์—ญ์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ Survivor๋Š” ๋น„์›Œ์ง„ ์ƒํƒœ๋กœ ์‹œ์ž‘๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  2. Eden ์˜์—ญ์ด ์˜ค๋ธŒ์ ํŠธ๋กœ ๊ฐ€๋“์ฐจ๋ฉด, MinorGC๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  3. MinorGC๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, Reachable ์˜ค๋ธŒ์ ํŠธ๋“ค์€ Survivor0์œผ๋กœ ์˜ฎ๊ฒจ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Unreachable ์˜ค๋ธŒ์ ํŠธ๋“ค์€ Eden ์˜์—ญ์ด ์ดˆ๊ธฐํ™” ๋ ๋•Œ ํ•จ๊ป˜ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ฌ๋ผ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 
  4. ๋‹ค์Œ MinorGC๊ฐ€ ๋ฐœ์ƒํ• ๋•Œ, Eden ์˜์—ญ์—๋Š” 3๋ฒˆ๊ณผ ๊ฐ™์€ ๊ณผ์ •์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Unreachable ์˜ค๋ธŒ์ ํŠธ๋“ค์€ ์ง€์›Œ์ง€๊ณ , Reachable ์˜ค๋ธŒ์ ํŠธ๋“ค์€ Survivor๋กœ ์ด๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด์— Survivor1์— ์žˆ์—ˆ๋˜ Reachable ์˜ค๋ธŒ์ ํŠธ๋“ค์€ Survivor2๋กœ ์˜ฎ๊ฒจ์ง€๋Š”๋ฐ, ์ด๋•Œ age ๊ฐ’์ด ์ฆ๊ฐ€๋˜๋ฉฐ ์˜ฎ๊ฒจ์ง‘๋‹ˆ๋‹ค. ์‚ด์•„๋‚จ์€ ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ๋“ค์ด Survivor1์œผ๋กœ ๋ชจ๋‘ ์˜ฎ๊ฒจ์ง€๋ฉด, Survivor0๊ณผ Eden์€ ์ดˆ๊ธฐํ™” ๋ฉ๋‹ˆ๋‹ค.  ์—ฌ๊ธฐ์„œ Survivor0์—์„œ Survivor1๋กœ์˜ ์ด๋™์€ ๋Š˜ age ๊ฐ’์˜ ์ฆ๊ฐ€๋ฅผ ๋ณ‘ํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 
  5. ๋‹ค์Œ MinorGC๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, 4๋ฒˆ ๊ณผ์ •์ด ๋ฐ˜๋ณต๋˜๋Š”๋ฐ, Surviovr1์ด ๊ฐ€๋“์ฐจ ์žˆ์—ˆ์œผ๋ฏ€๋กœ Survivor1์—์„œ ์‚ด์•„๋‚จ์€ ์˜ค๋ธŒ์ ํŠธ๋“ค์€ Survivor0์œผ๋กœ ์˜ฎ๊ฒจ์ง€๋ฉด์„œ, Survivor1๊ณผ Eden์€ ์ดˆ๊ธฐํ™” ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ์—๋„, age๊ฐ’์ด ์ฆ๊ฐ€๋˜์–ด ์˜ฎ๊ฒจ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  6. Young Generation์—์„œ ๊ฒŒ์†ํ•ด์„œ ์‚ด์•„๋‚จ์œผ๋ฉฐ age๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ๋“ค์€ age๊ฐ’์ด ํŠน์ •๊ฐ’ ์ด์ƒ์ด ๋˜๋ฉด Old Generation์œผ๋กœ ์˜ฎ๊ฒจ์ง€๊ฒŒ ๋˜๋Š”๋ฐ ์ด ๋‹จ๊ณ„๋ฅผ Promotion์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 
  7. MinorGC๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณต๋˜๋ฉด, Promotion ์ž‘์—…๋„ ๊พธ์ค€ํžˆ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  8. Promotion ์ž‘์—…์ด ๊ณ„์†ํ•ด์„œ ๋ฐ˜๋ณต๋˜๋ฉด์„œ Old Generation์ด ๊ฐ€๋“์ฐจ๊ฒŒ ๋˜๋ฉด MajorGC๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์ด ๊ณผ์ •๋“ค์ด ๋ฐ˜๋ณต๋˜๋Š” ๊ฒƒ์ด ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค.

 

MinorGC : Young Generation์—์„œ ๋ฐœ์ƒํ•˜๋Š” GC
MajorGC : Old Generation์—์„œ ๋ฐœ์ƒํ•˜๋Š” GC 
FullGC : Heap ์ „์ฒด๋ฅผ clearํ•˜๋Š” ์ž‘์—…

 

Reference 

 

์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ - ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜

๊ฐœ์š” Java ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค. Java ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์ดํ•ดํ•˜๊ณ  ์žˆ์œผ๋ฉด ์ข‹๋‹ค. ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ - ์Šคํƒ & ํž™ ๋ฅผ ๋จผ์ € ์ฝ๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ๋ชจ๋‹ˆํ„ฐ๋ง ํˆด VisualVM ๊ณผ VisualGC ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. Metaspace, Young/Old Generation ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ์ข…๋ฅ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค

yaboong.github.io

 

์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ - ์Šคํƒ & ํž™

๊ฐœ์š” Java ์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•จ. Stack ๊ณผ Heap ์˜์—ญ ๊ฐ ์—ญํ• ์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์–ด๋–ป๊ฒŒ Stack ๊ณผ Heap ์˜์—ญ์ด ์‚ฌ์šฉ๋˜๋Š”์ง€ ์‚ดํŽด๋ณธ๋‹ค. Wrapper Class ์™€ Immutable Object ์— ๋Œ€ํ•ด์„œ๋„ ์‚ด์ง ์•Œ์•„๋ณธ๋‹ค. Garbage Collection ์ด ๋ฌด์—‡์ธ์ง€๋„ ์•„์ฃผ ์‚ด์ง ์•Œ์•„๋ณธ๋‹ค.

yaboong.github.io

 

Java Garbage Collection Basics

Java Overview Java is a programming language and computing platform first released by Sun Microsystems in 1995. It is the underlying technology that powers Java programs including utilities, games, and business applications. Java runs on more than 850 mill

www.oracle.com