βœ… Garbage Collection?

ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 객체λ₯Ό(κ°€λΉ„μ§€) μ°Ύμ•„ λ©”λͺ¨λ¦¬λ₯Ό νšŒμˆ˜ν•˜λŠ” μž‘μ—…/λͺ¨λ“ˆ

이 λ•Œ κ°€λΉ„μ§€λž€ Heap μ˜μ—­μ— λ™μ μœΌλ‘œ ν• λ‹Ήν–ˆλ˜ λ©”λͺ¨λ¦¬ 쀑 ν•„μš” μ—†κ²Œ 된 λ©”λͺ¨λ¦¬ 객체λ₯Ό 가리킀며 Garbage Collection 은 μ œν•œλœ λ©”λͺ¨λ¦¬ 곡간을 효율적으둜 정리해 μƒˆλ‘œμš΄ 객체가 μ›ν™œνžˆ ν• λ‹Ήλ˜λ„λ‘ ν•œλ‹€.

for(int i=0; i<10000; i++){
	A a = new A();
	a.hi();
}

10000개의 객체가 생성 및 μ‚¬μš©λ˜μ—ˆμœΌλ‚˜ 블둝 λ°–μœΌλ‘œ λ‚˜κ°€λ©΄ μ“Έλͺ¨κ°€ μ—†μ–΄μ§„λ‹€.

C/C++ 같은 low level에 κ°€κΉŒμš΄ 언어듀은 직접 λ©”λͺ¨λ¦¬ ν• λ‹Ήκ³Ό ν•΄μ œλ₯Ό 해쀄 수 있고, 또 ν•΄μ€˜μ•Ό ν•˜μ§€λ§Œ Javaμ—μ„œλŠ” GC에 μ˜ν•΄ λ©”λͺ¨λ¦¬ 관리가 효율적으둜 이루어진닀.

🚨 μ£Όμ˜ν•  점

μ•Œμ•„μ„œ λ‹€ ν•΄μ£Όλ‹ˆκΉŒ μ‹ κ²½ μ•ˆ 써도 λœλ‹€κ³  μƒκ°ν•˜κΈ° μ‰½μ§€λ§Œ μ΄λŸ¬ν•œ GC에도 μœ μ˜ν•΄μ•Ό ν•  점이 μžˆλ‹€.

μžλ™μœΌλ‘œ μ²˜λ¦¬κ°€ λœλ‹€κ³  ν•˜λ”λΌλ„ λ©”λͺ¨λ¦¬κ°€ μ–Έμ œ ν•΄μ œλ˜λŠ”μ§€ μ •ν™•ν•˜κ²Œ μ•Œ 수 μ—†μœΌλ―€λ‘œ μ œμ–΄ν•˜κΈ° νž˜λ“€λ©° GCκ°€ λ™μž‘ν•˜λŠ” λ™μ•ˆμ—λŠ” λ‹€λ₯Έ λ™μž‘μ΄ λ©ˆμΆ”κ²Œ λ˜λŠ” Stop the World λ¬Έμ œκ°€ μžˆλ‹€.

이 λ•Œλ¬Έμ— GCκ°€ λ„ˆλ¬΄ 자주 μ‹€ν–‰λ˜κ²Œ 되면 μ„±λŠ₯ ν•˜λ½μœΌλ‘œ 이어진닀.

λ”°λΌμ„œ ν”„λ‘œκ·Έλž¨μ˜ μ‚¬μš©μ„±μ— 맞게 GCκ°€ 효율적으둜 μˆ˜ν–‰λ˜λ„λ‘ μ΅œμ ν™”ν•˜λŠ” GC νŠœλ‹ μž‘μ—…μ„ ν•˜κΈ°λ„ ν•œλ‹€.


🧿 Garbage Collection λŒ€μƒ

⚑ Garbage Collection λ™μž‘ 방식