woowacourse / tecoble-comments

0 stars 0 forks source link

post/2021-08-09-jvm-memory/ #79

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

JVM에 관하여 - Part 3, Run-Time Data Area

Java 로 작성된 코드는 어떻게 돌아가는 걸까? 해당 물음에 답을 찾기 위한 JVM 시리즈 3편, JVM 의 구성요소 중 Run-Time Data Area 에 관한 글입니다. 이번 글에서는 JVM…

https://tecoble.techcourse.co.kr/post/2021-08-09-jvm-memory/?utterances=6cd6977fce6500265c0c22f0Kg4muv30D%2B3g4HFPVf7xD1huJ6is6U2v98GTMu0FTz7YxOanMxulM%2BP%2BrE8fqwsttBlpMIYd1gFjpPACBE6QaMmajX9g7AUweQ35Lo9G61bZTQQBVyYfXvpDkqc%3D

Sangyong-Jeon commented 1 year ago

안녕하세요. JVM에 대해 잘 읽고있습니다. 여기서 질문이 있는데 Heap 영역에서 시간에 따른 구분으로 Eden, Servivor0, Servivor1, Old, Permanent를 적어놓으셨는데 Old -> Perm 의 그림은 잘못된게 아닌가싶어서 질문드립니다. Eden -> S0 -> S1 -> Old 까지는 다른 문서를 보면 나와있지만 Old -> Perm 의 내용은 전혀 보이지가 않습니다. Perm은 본문처럼 클래스의 메타데이터를 저장하는 곳인데 저렇게 점선으로 그려서 화살표로 표현해도 되는건지 궁금합니다. Heap 영역에서의 구분을 보여준다고 생각하면 화살표는 없는게 혼란이 없지않을까 싶습니다. 처음 JVM을 학습했을 때 그림이 저렇게 있어서 Old도 특수한경우에는 Perm으로 가는구나 라고 자의적인 해석을 했지만 그런 내용이 보이질 않습니다. 혹시 제가 몰라서 그런것이라면 Old -> Perm 으로 가는 경우가 있을까요?

wasuphj commented 1 year ago

작성자는 아니지만,, Old -> Perm으로의 이동은 없습니다. 사실 그 Perm. 영역 마저도 자바 8 이후로 사라진 영역이라 저 그림이 잘못되었다고 보셔도 무방한 것 같습니다.

다만, VM Venture 마다 Perm 영역도 GC를 수행하는 경우가 있어서, 일반적으로 GC 설명할 때 같이 설명하는 영역인지라 저렇게 그리신 것 같은데, 사실 점선으로 그리신 거 보면 저런 Promotion(?)이 존재하지 않는 건 인지를 하고 계신 것 같네요.

hybeom0720 commented 1 year ago

두 분 다 좋은 의견 감사드립니다! 말씀하신데로 존재하던 Perm 영역이 사라졌다는 설명과 gc 단계 설명을 같은 그림 안에 넣다가 말씀해주신 오류가 발생하였네요. 기회가 된다면 수정해놓도록 하겠습니다.

다시 한 번 소중한 조언 감사드립니다.