프로그래밍
Garbage와 Garbage Collection
주멘이
2018. 6. 18. 15:14
Garbage
- 응용프로그램에서 더 이상 사용되지 않는 메모리
- 무효영역
- new 연산자를 이용하여 시스템으로부터 할당받아 사용되다가 더 이상 사용되지 않는 객체나 배열 메모리 등
- 더 이상 사용되지 않는다 = 객체나 배열을 가리키는 레퍼런스가 없다
- uncreachable 객체 (레퍼런스가 null이거나 메소드 내에서 (stack에) 생성된 객체) 가 대상
Garbage Collection
- Garbage를 회수하여 사용할 수 있는 메모리 공간을 늘리는 것
- Garbage Collector 가 수행
- JVM은 Garbage Collector 역할을 수행하는 Garbage Collection Thread를 갖고 있음
- JVM 판단하에 동작하므로, 사용자가 강제할 수 없지만
System.gc() 혹은 Runtime.getRuntime().gc() 등으로 요청할 수 있음
- 보통의 경우, JVM은 프로그램의 new 명령어를 읽어올때 GC를 Trigger함 -> 이때 heap의 메모리가 부족한지 check하고 collecting 여부를 판단