728x90
Garbage Collection : 자동 메모리 관리
가비지 컬렉터가 더이상 사용하지 않은 객체를 제거하는 것
가비지 컬렉션의 특징
- 자동 메모리 관리
- 가비지 컬렉션은 프로그래머가 구현할 수 없다.
- 가비지 컬렉션은 객체이지 참조가 아니다.
- 가비지 컬렉션의 대상은 살아있는 스레드가 더이상 참조하지 않는 객체이다.
- 다른 참조 변수가 참조하고 있는 객체는 가비지 컬렉션의 대상이 될 수 없다.
- 객체에 할당된 메모리를 명시적으로 해제할 수 없다.
- 가비지 컬렉터가 객체를 어떤 순서로 정리하는지 알 수 없다.
- 가비지 컬렉터가 언제 수행될지 알 수 없다.
- 가비지 컬렉터는 JVM(Java Virtual Machine)이 결정하며 프로그래머는 단지 요청만 할 수 있다.
가비지 컬렉션의 조건
- 참조 변수에 null 할당하기
참조 변수에 null을 할당하면 이 변수 이전의 값은 더이상 접근 할 수 없다.
그래서 이 객체는 가비지 컬렉션이 된다. - 참조 변수에 다른 객체의 참조값 할당하기
참조 변수에 다른 객체의 참조 변수를 할당하면 참조 변수가 가리키고 있던 객체를 접근 할 수 없다.
가비지 컬렉션 요청하기
어떤 객체가 가비지 컬렉션 대상이 되어있다고 해서 바로 가비지 컬렉션이 동작하지 않는다.
가비지 컬렉션은 JVM이 스스로 동작시키므로 프로그래머가 강제시킬 수 없다.
다만 아래와 같은 방법으로 요청은 할 수 있다.
System.gc();
Runtime.getRuntime().gc();
예제 1.
<Garbage Collection>
public class GC {
public static void main(String[] args) {
String str = new String("Hi");
String str2 = new String("Hi");
str2 = str;
System.gc();
Runtime.getRuntime().gc();
//------------------ 1. 런타임 속성
//------------------------ 2. 1속성에서 gc실행
'JAVA' 카테고리의 다른 글
jsp파일 (0) | 2021.07.28 |
---|---|
다이나믹 웹 프로젝트에서 DB 연결 (0) | 2021.07.27 |
자바 이클립스에 Maria DB 연결하기 (0) | 2021.07.27 |
Maria DB 설치 (0) | 2021.07.27 |
자바로 Excel 파일 만들기 (0) | 2021.07.27 |