본문 바로가기

Programming & Etc4

Garbage Collection 알고리즘 - 2 참고자료 https://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795 http://www.cs.technion.ac.il/~erez/courses/gc/ https://v8.dev/blog/concurrent-marking # Reference Counting https://www.cs.technion.ac.il/~erez/courses/gc/lectures/08-reference-counting.pdf ( 이 내용은 CPython 문서를 참고했다. https://devguide.python.org/garbage_collector/ ) Reference가 추가 될 때마다 ref count를 증가시키고, Refe.. 2021. 12. 31.
Garbage Collection 알고리즘 - 1 참고 자료 http://www.cs.technion.ac.il/~erez/courses/gc/ https://www.amazon.com/Garbage-Collection-Handbook-Management-Algorithms/dp/1420082795 # 마크-스윕 ( mark-sweep ) http://www.cs.technion.ac.il/~erez/courses/gc/lectures/01-Basics.pdf 우선 마크-스윕은 Reachable한 오브젝트를 마킹한다음 마킹이 안된 object를 Free시키는 방법이다. Free 상태인 메모리는 반드시 Free상태인 Chunk를 list로 관리한다( glibc malloc 의 메모리 관리 방법이랑 비슷하게 ). 중간 중간에 위치하는 사용가능한 메모리 청크.. 2021. 12. 31.
Java synchronized 키워드와 Memory Barrier 자바를 공부해본 사람이라면 effective java (3rd) 라는 유명한 책에서 다음과 같은 예제 코드를 본 적이 있을 것이다. public class StopThread { private static boolean stopRequested; public static void main(String[] args) throws InterruptedException { Thread backgroundThread = new Thread(() -> { int i = 0; while (!stopRequested) i++; }); backgroundThread.start(); TimeUnit.SECONDS.sleep(1); stopRequested = true; } } 실행 시 JVM은 먹통이 되고 실행되지 않는.. 2021. 11. 3.
Git Internal - 이문서는 git internal pdf문서 (https://github.com/pluralsight/git-internals-pdf)의 Understanding Git파트에서 몇몇 부분을 추가해 정리한 내용입니다. Git Object Type Git이 repository를 저장할 땐 4가지의 Git Object Blob, Tree, Commit, Tag 를 이용해 저장한다. git object들은.git 디렉토리에 zlib으로 compressed 되어 저장된다. 그리고 그 Object의 이름은 [compress 되기 전의 content데이터+헤더값]의 sha-1 hash가 object의 이름이 된다. 헤더값은 [종류]\x20[decimal ascii size]\x00 포맷이다. 즉 Objec가 blo.. 2021. 11. 2.