21분 경 Old generation의 GC 설명 질문입니다.
21분 경에 Old Generation을 설명하시면서 Full GC를 언급하셨는데, 해당 시점에는 Major GC가 발생해서 개체를 회수하게 되고 Major GC로 부터 살아남은 개체가 Metaspace 영역으로 옮겨지는 것 아닌가요??
물론 Full GC를 통해서도 Old Generation의 개체가 회수되기는 하겠지만 해당 부분 설명에선 Major GC로 언급하는 것이 그림과 일치하지 않나해서 질문드립니다
답변 3
0
엄밀이 말하자면 Major GC라고 하는 것이 맞을 수는 있겠습니다. 그러나 맥락상 Full GC라 하더라도 큰 문제는 없지 않나 생각합니다. AI 답변과 더불어 참고하시기 바랍니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다. 하규영님, 기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM 강의에서 Old Generation과 GC에 대해 질문 주셔서 감사합니다.
먼저, JVM에서의 Garbage Collection에 대해 개념을 정리하겠습니다.
Major GC와 Full GC의 차이:
- Major GC는 주로 Old Generation에서 객체를 회수하는 역할을 합니다. Major GC가 실행되면 Old Generation에 있는 불필요한 메모리를 회수합니다.
- Full GC는 Heap 전체를 대상으로 수행되며, 모든 영역(Eden, Survivor, Old Generation)에서 불필요한 객체를 회수합니다. 따라서 Full GC는 수행 시간이 상대적으로 길며, 애플리케이션의 성능에 부정적인 영향을 미칠 수 있습니다.
- Major GC는 주로 Old Generation에서 객체를 회수하는 역할을 합니다. Major GC가 실행되면 Old Generation에 있는 불필요한 메모리를 회수합니다.
Metaspace의 역할:
- Metaspace는 자바 8부터 Permanent Generation(PermGen)을 대체한 네이티브 메모리 영역입니다. 이 영역은 클래스 메타데이터를 저장합니다.
- Major GC에서 살아남은 객체는 Old Generation에 남아 있으며, Metaspace로 이동하지 않습니다. Metaspace는 클래스 수준의 메타정보를 저장하기 때문에 객체의 이동과는 무관합니다.
- Metaspace는 자바 8부터 Permanent Generation(PermGen)을 대체한 네이티브 메모리 영역입니다. 이 영역은 클래스 메타데이터를 저장합니다.
하규영님께서 언급해 주신 부분에서, 강의의 설명이 혼란을 줄 수 있었다면, 해당 내용은 Major GC가 Old Generation을 대상로 한다는 점에 주의하여 들어주시면 좋겠습니다. Metaspace는 Heap 외부의 영역으로, Heap 내에서 객체 이동과는 다르게 관리됩니다.
아래 링크에서는 JVM의 GC 메커니즘과 관련된 더 많은 정보를 얻으실 수 있습니다:
저는 질문자님의 이해를 돕고자 유사한 답변 링크를 추천해드렸습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
compareTo를 사용하는 이유가 뭔가요?
0
45
1
[실습] MyString에 복사 생성자 추가
0
38
1
안녕하세요~ 회수라는 의미에 대해서 질문합니다.
0
71
1
equals의 재정의(overriding)에 대해서
0
80
2
TestEx 객체 생성 시 생성자 호출 질문
0
62
2
[MyString 실습 인스턴스 중복 생성 문의] MyString.setString(String param)
0
100
2
주소록 실습 3단계에서 막혔어서 조언을 구하려고 질문 드립니다.
0
85
2
해시 알고리즘 관련으로 질문이 있습니다.
0
73
2
임시 객체의 첫 번째 상황에 대한 질문
0
70
2
String 객체가 하나 더 생성되는 이유가 궁금합니다
0
189
3
하위 클래스와 상위 클래스의 생성자 순서
0
104
2
GC의 age와 관련하여 질문 있습니다.
0
97
2
Object Header 의 Klass word (39강 36:00)
0
115
2
method area는 이름이 class area가 아니고 왜 method aread인지 궁금합니다.
0
139
2
교안 p.305 'throw 필수' 질문
0
81
1
Metaspace에 대한 질문
0
257
2
clone() 메서드를 재정의함으로써 Deep copy로 구현한다로 이해하면 될까요?
0
120
2
MyListEx 질문드립니다.
1
136
1
part3 강의 개강
0
197
2
문자열 비교 강좌에서 문자열 선언 방법 간에 hashCode() 값 관련한 질문입니다.
0
222
2
상속과 오지랖의 콜라보 예제에서 clone() 메서드에 대한 문의드립니다.
1
182
2
보이지 않는 임시 객체의 자막 수정 요청
0
116
2
스레드 관련해서 질문이 있습니다.
0
203
1
metaspace 관련 문의드립니다.
0
199
2





