자바개발자가 gc (garbage collection) 를 이해하기 (또는 c++ 개발자가 gc를 구현하려면 어디서 참조하면 편할까?)
scribbling 2012. 2. 11. 01:07
1. 경험
- 웹 서비스 또는 솔루션을 운영하면서 jvm 옵션을 변경을 다양한 경험 하기 (heap memory, gc algorithm, gc pause, logging)
튜닝하면서 자연스럽게 인터넷에 흩어져 있는 자료들을 보면서 깊지 않은 공부 (오라클 또는 썬 문서)를 많이 본다.
- Memory Management in the Java HotSpot™ Virtual Machine (http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf)
2. 학습 필요
- 데니스 리치가 쓴 c programming lanuguage의 chap 8 장 (malloc, free) - 기본 중의 기본.
- The Garbage Collection Handbook The Art of Automatic Memory Management
- Garbage Collection: Algorithms for Automatic Dynamic Memory Management
(운영체제와 컴파일러에 정통하신 분은 금방 보는 참고서일뿐 ......ㅡ.ㅡ;;)
3. 주화입마 될 수 있다. jdk쪽은 좀 복잡함. 머리속을 gc 를 하겠다는 생각으로 봐야함..
- 오픈 소스 보기
parrot (https://github.com/parrot/parrot/blob/master/src/gc/gc_gms.c)
jdk7 (http://hg.openjdk.java.net/jdk7/modules/hotspot/file/9646293b9637/src/share/vm/gc_implementation/)
qish (http://starynkevitch.net/Basile/qishintro.html )
mono (http://mono-project.com/Generational_GC, https://github.com/mono/mono/tree/e4b9b8802066f6ed8cca151fe8cddcb4f3262806/mono/metadata 에서 gc.c)
v8 (http://code.google.com/p/v8/source/browse)의 heap.cc, spaces.cc, mark-compact.cc
jikesrvm (http://sourceforge.net/projects/jikesrvm/files/jikesrvm/3.1.1/ )의 rvm\src\org\jikesrvm\mm\mminterface 클래스파일들
- 논문 보기
IEEE, ACM, 다양한 paper를 참조하고 reference를 찾아서 보기
(http://scholar.google.co.kr/scholar?hl=ko&lr=&q=related:ppTY-k29HfoJ:scholar.google.com/&um=1&ie=UTF-8&ei=3Tw1T__XHOGTiQeW2ID2AQ&sa=X&oi=science_links&ct=sl-related&resnum=4&ved=0CF0QzwIwAw)
나는 다 보지는 못했고 계속 공부중..
'scribbling' 카테고리의 다른 글
Cut the rope 웹 브라우져에서 하기 (0) | 2012.02.22 |
---|---|
배치 서버 운영중, CPU가 튀는 자바 배치 (java batch)를 해결하는 법 (1) | 2012.02.14 |
구글(Google)의 "Let's make TCP faster"에 대한 리눅스 커널 패치 내역 (0) | 2012.02.09 |
자바(java) io와 nio (2) | 2012.02.03 |
Let's make TCP faster, Google의 "TCP Fast Open" paper (0) | 2012.01.31 |