2011-04-27 4 views
0

현재 JRuby를 사용하고 메모리 누수 문제가있는 Resque를 실행 중입니다. Resque 및 Ruby/REE에 대한 좋은 점 중 하나는 메모리 누수를 VM 단위가 아닌 각 작업별로 포크 단위로 격리하는 포크 ​​의미를 사용한다는 것입니다.JRuby에서 스레드 메모리 분리

JVM을 포크하는 옵션이있는 것처럼 보이지 않지만 메모리를 스레드로 격리 할 수있는 작업이 있는지 궁금해하므로 스레드에서 중지 이벤트가 발생하면 해당 스레드에서 생성 된 모든 메모리가 삭제됩니다. 관계없이 그것에 대한 참조가 여전히 있습니다.

답변

3

스레드는 분명 프로세스가 아닙니다. 스레드를 사용하는 경우 나머지 프로세스와 공통된 메모리 풀을 공유하므로 "해당 스레드가 만든 메모리"라는 개념이 없습니다. 쓰레드가 그들 자신의 메모리 공간을 얻도록 VM을 구현하는 것이 가능하지만, JRuby의 경우에는 우선 네이티브 쓰래드를 갖는 많은 이점들을 무효화 할 것입니다.

내 생각에 JRuby 팀 (예 : 나)과 협력하여 누출되는 것을 파악하고 해결할 것입니다. MRI 접근법은 사람이 코드에서 메모리와 리소스 관리를 게으르게 만드는 추악한 반창고입니다.

관련 문제