• Ruby 를 개발 한 Matz 가 지난 Barcelona Ruby Conference 에서
    • Ruby MRI v2.1은 “Generational Garbage Collection” 로 전환한다고 발표
    • Ruby 의 대폭적인 성능 향상을 기대
    • Ruby 2.1 은 연말 출시 예정
  • 공교롭게도 같은 날 다른 강연 에서 Github 의 Vicent Mart는
    • Ruby MRI의 가비지 컬렉션 구현을 강도 높게 비판했다.
    • 현재 mark & sweep 알고리즘을 “쌍두 괴물 (2-headed monster)”이라고 부르며 (mark&sweep 은 “표시하고 쓸기”로 보통 번역)
    • 대규모 Ruby 시스템인 Github가 Ruby 의 GC 제한때문에 여러번 영향을 받았다고 설명했다.
    • 문제 중 하나는: marking 단계가 느리다는 것.
      • 활성 objects 를 식별할 때: 전체 object graph 를 순차적으로 순회하기 때문에 application 은 그동안 사실상 정지 상태
    • 또 하나의 문제는: sweeping 단계가 명확하지 않아서 C extensions 에서 여전히 사용되고 있는(참조중인) Ruby objects 들을 해제해버릴 수 있다는 것.
    • Vincent 는 Valgrind 같은 도구를 이용하거나, 정적 분석을 실시함으로써 이러한 문제를 최소화 할 수 있다고 함.
    • 하지만 현재의 Ruby MRI의 GC 구현에 근본적인 결함이 있다는 점을 강조하고
      • 대규모 시스템은 JRuby 난 Rubinius 로 마이그레이션하길 추천. (Ruby GC 의 기능이 똑같이 구현되어 있음)
  • New Relic 의 Chris Kelly 씨는
    • 현재의 GC 구현이 느리다는 것에 동의했지만.
    • 보통의 Rails 애플리케이션은 수십만개의 object와 함께 시작하기 위해 GC의 marking 단계가 수행되는 동안 분석작업이 필요하다는 사실에 주목했다. (뭔소린지 모르겠다…)
    • Ruby GC 벤치마크의 결과는 Ruby 1.8 -> 1.9 의 가비지콜렉션 실행시간이 48% 감소했다는 결과도 공개.
      • Chris 씨는 이 결과는, MRI 개발팀이 Ruby 성능개선에 큰 개선을 하고 있음을 보여주고.
      • (Matz 에 따르면, generational GC로의 전환이marking 단계의 실행시간을 줄어드는 것을 기대할 수 있다고)

https://www.infoq.com/news/2013/09/ruby-2-1-gc-revamp