자바공부할때 다른 내용이야 어디서나 나오지만
JVM / GC / Weak Reference Soft Reference ... 같은 내용은 공부하기도 공부해야하는 지도 잘 모르기때문에
나중을 위해서라도 검색하기 쉽게 간단한 키워드라도 남겨두기 위해 블로깅
갓갓 Naver D2 를 많이 참고
JVM
JVM 은 Class Loader / Execution Engine / GC / Runtime Data Area 로 나뉜다.
Class Loader : 클래스 파일을 데이터 에어리아에 적재
Execution Engine : 메모리에 적재된 클래스를 기계어로 번역해 명령어단위로 실행
Garbage Collector : 뭐 다들 아시는 그거, Heap 에서 참조되지 않는 객체를 탐색, 제거, GC 하면 다른 쓰레드가 정지됨
Runtime Data Area: JVM 상의 메모리 영역이다. 6가지 영역으로 나뉘는데 그중에서 GC 가 수행되는것은 힙 영역
힙영역은 Eden survivor1 survivor2 | old permanent(-> 8인가... 부터 메타스페이스로 바뀜)
<----young (New)--->
으로 나뉜다.
https://d2.naver.com/helloworld/1230
GC
자바의 GC는 대충 말하자면 지워질놈은 빨리 지워지고 안지워질놈은 잘안지워진다... 컨셉을 가지고
Minor GC: young 영역에서 일어남
Major GC: Old 에서 일어남
JVM 은 파라미터로써 GC 수행 방식을 정할수 있다.
5개 정도있는데 하나하나 어떻게 동작하는지는 정확히는 모르겠음.. 직렬, 병렬, G1(테이블 방식?) 등등..
https://d2.naver.com/helloworld/1329
Reference
Java는 포인터 가 없고 메모리를 직접관리 못하지만
개발자에게 어느정도의 컨트롤를 할수있게 해준다 그게 reference를 정해주는것이고
Strong ref : 걍 New하면 Strong, GC안된다.
Soft ref: Out of Memory 에 가까워 질수록 GC
Weak ref: GC 시수거
Phantom ref: GC 시 수거...는 맞는데 자바의 finalize 를 대체한다.. 설명하기 좀 어렵다. ReferenceQueue 가 필수..
https://d2.naver.com/helloworld/329631
'프로그래밍 언어 노트 > JAVA | Kotlin' 카테고리의 다른 글
[Spring Boot] + Kotlin 에서 Route + Beans DSL 을 사용해보자 (0) | 2023.02.25 |
---|---|
Kotlin SQL DSL 을 구축해보자! 쓸 수 있는 방법을 전부 동원해봐서! (0) | 2023.02.18 |
Kotlin 의 Lambda 문법으로 DSL 을 구축해보자 (0) | 2022.11.18 |
[Jackson] Subtype 별 Polymorphic De/Serialization 을 제공하는 Deduction (0) | 2022.05.01 |
[JVM] Typereference 와 Type Erasure (타입 소거) (0) | 2021.12.07 |