GN⁺ 4달전 | parent | ★ favorite | on: 가비지 컬렉션 핸드북(gchandbook.org)
Hacker News 의견들
  • 내가 가장 좋아하는 가비지 컬렉션 관련 일화는 이 글에 있음

    • 다른 곳에서도 비슷한 방식을 쓴다고 들었음. 예를 들어 Standard Missile에서는 유압유를 재순환하지 않고 비행 중 그냥 배출하는데, 정말 멋진 공학적 해결책
    • 그건 일종의 region-based 메모리 할당기라고 부를 수 있을 것 같음. 단지 단 하나의 리전만 존재한다는 점이 다름
    • 이런 방식은 꽤 표준적인 접근임. 핵심은 null GC가 아니라 정적 분석으로 정확한 메모리 요구량을 증명하는 데 있음
    • 이 이야기는 동료들에게 자주 들려주는 좋은 교훈임. 완벽한 소프트웨어를 만들고 싶지만, 실제 비즈니스 요구에선 꼭 그럴 필요가 없음을 보여줌
    • 이게야말로 진정한 궁극의 가비지 컬렉션 기술이라고 부르고 싶음
  • 저자들이 실제로 어떤 프로덕션 GC를 만들었는지 책에 나와 있으면 좋겠음. 현실 세계에서 배울 수 있는 비직관적인 사례들이 많기 때문에, 그런 내용이 담긴 책이라면 훨씬 흥미롭고 유용할 것 같음

  • 정말 좋은 책임. 예전 토론도 있었음: 이전 논의 링크

  • 책에 실시간 GC에 대한 짧은 섹션이 있던데, 제약된 환경에서의 GC에 얼마나 비중을 두는지 궁금함
    나도 예전부터 3D AA급 게임을 GC로 구현해보고 싶은 충동이 있었음. 리소스가 극도로 제한된 플랫폼이 아니라면 충분히 가능하다고 생각함
    이제 업무에서 조금 여유가 생겨서, 이번 겨울과 봄에 프로토타입을 만들어볼까 함

    • 요즘 대부분의 AA 게임 엔진은 이미 GC를 사용함. UnrealUnity가 대표적임. 내부적으로는 수동 메모리 관리도 하지만, 노출된 API는 GC를 염두에 두고 설계되어 있음
      반면 Godot Engine은 GC를 쓰지 않고 참조 카운팅을 사용함. 순환 참조 탐지를 지원하지 않기 때문에 모든 객체를 트리 구조로 배치해야 함
    • 미 해군의 전투함 무기 조준 시스템이나 프랑스의 미사일 추적 시스템도 Java의 실시간 GC로 구현되어 있음.
      관련 자료: Thales 사례, Aegis Combat System, USS Bunker Hill 사례
      현실에서는 모든 GC가 동일하지 않으며, “insert credit to continue” 같은 건 존재하지 않음
    • Minecraft도 GC를 사용하는 인디 게임이지만, 역사상 가장 많이 팔린 게임임
    • Unreal Engine은 내부 객체 그래프를 위한 GC를 가지고 있어서 이미 많은 게임이 GC를 활용 중임
    • Unreal증분형 GC를 사용함
  • 이 책은 정말 대단한 참고서임. GC를 사용하는 엔지니어라면 반드시 읽어야 하고, GC가 필요 없는 사람이라도 초반의 메모리 할당기 부분이 매우 유익함

  • 나도 이 책을 가지고 있음. 매우 잘 쓰였고 꼼꼼한 책이라 강력히 추천함

  • 예전에 Hosking 교수님에게 수업을 들었음. 괜찮은 경험이었고, 그분이 쓴 책이라서 바로 구매했음
    필수는 아니지만, GC의 설계 문제와 파이널라이저의 영향을 깊이 이해하는 데 도움이 되었음. 그 부분을 읽고 꽤 큰 깨달음을 얻었음

  • 인쇄본과 EPUB 파일을 함께 구매할 수 있는 “buy now” 버튼이 있었으면 좋겠음. 사이트에서 책을 홍보하긴 하지만, 구매 과정이 너무 복잡함