2014-09-20 2 views
2

CL에서 약한 참조를 생성하기위한 이식성이 있습니까? 그렇지 않은 경우, 불필요한 청취자가 이벤트 구독만으로 계속 살아남아 메모리 누출을 피하기 위해 어떤 대안을 사용해야합니까? 내 특별한 경우에, 상기 청취자는 기능적 반응 노드 (즉, 부작용이없고, 저장된 값에 대해서만 유용함)를 구현하는 데 사용되므로 수동 탈퇴는 매우 비 숙련 될 것이다.커먼 리스프 약한 참조?

+5

아마도 : http://common-lisp.net/project/trivial-garbage/ – uselpa

+0

흥미로운 질문이지만, 스택 OVerflow의 주제와 관련 : "책, 도구, 소프트웨어 라이브러리, 자습서를 추천하거나 찾도록 요청하는 질문 또는 다른 오프 사이트 리소스가 스택 오버플로에 대해 논쟁의 여지가 없으므로 문제를 설명하고 지금까지 해결 된 문제를 설명하십시오. " comp.lang.lisp, lispforum 사이트 또는 #lisp에 대한 질문을 시도 할 수 있습니다. –

+0

@ JoshuaTaylor, 저는 그의 질문이 합리적으로 명확하다고 생각합니다. 그는 반응 코드를 쓰고 있으며, 그의 처리기는 노드가 가비지 수집을 못하게하고 있습니다. 쉬운 해결책은 약한 참조를 사용하는 것이고, 그는 그들을 이식 할 수있는 방법을 묻습니다. – jch

답변

1

약한 참조는 ANSI에서 표준화되지 않았으며 대부분의 구현에서는 약한 참조를 만드는 방법이 있지만 제공된 추상화는 다릅니다. 예를 들어, CMUCL, CLISP 및 SBCL은 약한 참조 ("약 포인터")를 제공하는 반면 Franz는 약한 벡터를 가지고 Clozure는 값이 약한 해시 테이블을 제공합니다.

다양한 구현에서 약한 포인터에 대한 이식 가능한 인터페이스를 제공한다고 주장하는 라이브러리가 있습니다. 나는 그들이 얼마나 좋은지 모른다.