왜 JVM GC는 디스크,램과 달리 파편화/단편화 문제를 압축(memory compression)으로 해결한걸까?
·
JAVA
궁금증GC 알고리즘 중, 마크-스윕 알고리즘은 회수 대상에 대해서 마킹을 진행하고, 마킹된 대상들을 쓸어담아서 회수한다. 따라서 메모리에 살아남은 객체들 사이사이에 파편화된 공간이 남게 된다.이런 방식의 문제점은 메모리의 파편화가 생긴다는 것이다. 살아남은 객체 사이사이 공간들은 일정한 크기가 아니라 들쭉날쭉한 크기로 남게 될 것이고, 큰 객체가 생겨났을 때 해당 공간을 활용하지 못할 것이다.GC 알고리즘에서는 마크-컴팩트 알고리즘 혹은 마크-카피 알고리즘을 통해 이 단편화 문제를 해결한다. 컴팩트 알고리즘은 살아남은 객체들을 메모리공간의 첫 번째 구역부터 차례로 차곡차곡 쌓고 남은 영역을 회수한다. 마크-카피 알고리즘은 살아남은 객체들을 사용하지 않는 공간에 차곡차곡 쌓고 남은 영역을 회수한다. 이 알..
[JAVA] JVM, 자바의 메모리 구조
·
JAVA
개요 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 강의 | 김영한 - 인프런김영한 | 멀티스레드와 동시성을 기초부터 실무 레벨까지 깊이있게 학습합니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 실전 자바[사진][임베딩 영상]단순히 자바 문법을 안다?www.inflearn.com김영한 강사님의 강의를 듣고 배운 내용을 추가적인 내용과 함께 정리해서 올린다.본론자바의 메모리 구조를 조금 간단하게 정리하려고 한다.JVM 의 메모리 구조는 위와 같다.여기서 살펴볼 것은 메서드 영역, 힙 영역, JVM 스택이다.메서드 영역, Method Area메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터들을 관리한다. 프로그램의 모든 영역에서 공유해서 사용한다. (모든 스레드들이 공유한다...