-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stop-The-World는 왜 일어날까? #19
Comments
1. 들어가며GC 란?GC는 , Java 의 GC책에서도 명시되어 있는 것 처럼, Java에서는 개발자가 메모리를 직접 건드리는 것이 아니라 public String makeQuery(String code){
String queryPre = "select * from table_a where a = '";
String queryPost = "' order by c ";
return queryPre = queryPre + code + queryPost;
} 위 예시에서 makeQuery의 메서드 수행이 완료되면, 그렇다면 우리는 메모리 관리에 신경쓰지 않고 개발을 해도 되는걸까? Stop-The-World우리가 다시 말해, 책에서 여러가지 2. Stop-The-World가 발생하는 이유
(1) 메모리 파편화 (Memory fragmentation)메모리 파편화란, 컴퓨터 시스템에서 메모리 공간을 할당하고 해제하는 과정에서 발생하는 현상이며 크게 외부 파편화와 내부 파편화로 나눌 수 있다. 두 종류의 메모리 파편화 모두 메모리를 효율적으로 사용하는데에 있어 치명적이다.
앞서 힙 영역 내의 공간들을 큰 블록으로 만들기 위해서는, 객체를 새로운 주소로 이동 시키고 다시 주소를 참조하는 과정이 필요하다. 이를 위해서 (2) 객체 일관성
메모리 내의 객체들의 상태가 변경될 수도 있고, 다른 쓰레드가 객체를 참조할 수도 있다. 이런 가능성은 잘못된 결과나 의도치 않은 오류를 발생시킬 수도 있다. 예를 들어, 이런 오류를 방지하기 위해서 3. Compaction흩어져 있는 메모리를 압축하는 과정을 통해, 메모리를 효율적으로 사용할 수 있다. 4. Concurrent Mark & Sweep GC (= CMS Collector)앞서 언급했던 것처럼 어떤 알고리즘을 사용하더라도
초기 단계에서 잠시 멈춘 후에, 다른 쓰레드가 실행 중인 상태에서 실행되기 때문에 하지만, 다른 방식보다 메모리와 CPU를 더 많이 사용한다는 점이 단점이다. 또한 참고자료https://golf-dev.tistory.com/68 |
👍 문제
17장에서 GC 시리얼 콜렉터 방식을 설명하는 곳에서, Stop-The-World가 발생한다고 한다.
왜 GC를 할때, Stop-The-World가 발생할까?
GC.... 그래.. 어플리케이션 멈춰야 겠지,... 라고 가슴으로는 알겠는데, 머리로는 모르겠다.
설명해주었으면 좋겠다 !!
📺 관련 챕터 및 레퍼런스
Story.17 도대체 GC는 언제 발생할까? ( page. 331 )
🐳 비고
GC는 너무 어렵다.
The text was updated successfully, but these errors were encountered: