////
Search
β˜•

JAVA

garbage collection
방식
β€’
reference counting - ꡬ식
β—¦
μ„œλ‘œλ₯Ό μ°Έμ‘°ν•˜λŠ” 객체의 경우 μˆœν™˜ μ°Έμ‘° κ°’ 문제 λ°œμƒμœΌλ‘œ μ‚¬μš©λ˜μ§€ μ•ŠμŒ
β€’
mark and sweep - ν˜„μž¬ μ‚¬μš©λ˜λŠ” λ°©μ‹μœΌλ‘œ κ°œμ„ λœ λ²„μ „μœΌλ‘œ μ‚¬μš©
β—¦
gc rootλ‘œλΆ€ν„° 도달할 수 μžˆλŠ”μ§€ 체크
μ „λž΅ νŒ¨ν„΄ μ—°μŠ΅
챕터 13 : ꡬ성 3
// 문제 : μ•„λž˜κ°€ μ‹€ν–‰λ˜λ„λ‘ ν•΄μ£Όμ„Έμš”. // 쑰건 : 배열을 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€. class Main { public static void main(String[] args) { μ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ = new μ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ(); aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ.addμ‚¬λžŒ("ν™κΈΈμˆœ", 33); // λ‚˜μ΄κ°€ 33살인 1번째 μ‚¬λžŒ(ν™κΈΈμˆœ)이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ.addμ‚¬λžŒ("홍길동", 20); // λ‚˜μ΄κ°€ 20살인 2번째 μ‚¬λžŒ(홍길동)이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ.addμ‚¬λžŒ("μž„κΊ½μ •", 30); // λ‚˜μ΄κ°€ 30살인 3번째 μ‚¬λžŒ(μž„κΊ½μ •)이 μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬λžŒ aμ‚¬λžŒ1 = aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ.getμ‚¬λžŒ(1); aμ‚¬λžŒ1.μžκΈ°μ†Œκ°œ(); // μ €λŠ” 1번, ν™κΈΈμˆœ, 33μ‚΄ μž…λ‹ˆλ‹€. μ‚¬λžŒ aμ‚¬λžŒ2 = aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ.getμ‚¬λžŒ(2); aμ‚¬λžŒ2.μžκΈ°μ†Œκ°œ(); // μ €λŠ” 2번, 홍길동, 20μ‚΄ μž…λ‹ˆλ‹€. μ‚¬λžŒ aμ‚¬λžŒ3 = aμ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ.getμ‚¬λžŒ(3); aμ‚¬λžŒ3.μžκΈ°μ†Œκ°œ(); // μ €λŠ” 3번, μž„κΊ½μ •, 30μ‚΄ μž…λ‹ˆλ‹€. } } class μ‚¬λžŒμΈλ ₯κ΄€λ¦¬μ†Œ { μ‚¬λžŒ μ²˜μŒμ‚¬λžŒ; int μΈμ›μˆ˜; void addμ‚¬λžŒ(String 이름, int λ‚˜μ΄) { if (μ²˜μŒμ‚¬λžŒ == null) { μ²˜μŒμ‚¬λžŒ = new μ‚¬λžŒ(μΈμ›μˆ˜++, 이름, λ‚˜μ΄); } else { μ‚¬λžŒ ν˜„μž¬μ‚¬λžŒ = μ²˜μŒμ‚¬λžŒ; while(ν˜„μž¬μ‚¬λžŒ.λ‹€μŒμ‚¬λžŒ != null){ ν˜„μž¬μ‚¬λžŒ = ν˜„μž¬μ‚¬λžŒ.λ‹€μŒμ‚¬λžŒ; } ν˜„μž¬μ‚¬λžŒ.λ‹€μŒμ‚¬λžŒ = new μ‚¬λžŒ(μΈμ›μˆ˜++, 이름, λ‚˜μ΄); } } μ‚¬λžŒ getμ‚¬λžŒ(int 번호) { μ‚¬λžŒ ν˜„μž¬μ‚¬λžŒ = μ²˜μŒμ‚¬λžŒ; for (int i=1; i<번호; i++) { ν˜„μž¬μ‚¬λžŒ = ν˜„μž¬μ‚¬λžŒ.λ‹€μŒμ‚¬λžŒ; } return ν˜„μž¬μ‚¬λžŒ; } } class μ‚¬λžŒ { int 번호; String 이름; int λ‚˜μ΄; μ‚¬λžŒ λ‹€μŒμ‚¬λžŒ; μ‚¬λžŒ(int 번호, String 이름, int λ‚˜μ΄) { this.번호 = 번호; this.이름 = 이름; this.λ‚˜μ΄ = λ‚˜μ΄; } void μžκΈ°μ†Œκ°œ() { System.out.println("μ €λŠ” " + this.번호 + " 번, " + this.이름 + ", " + this.λ‚˜μ΄ + "μž…λ‹ˆλ‹€."); } }
Java
볡사