필자는 (FFI 노력의 일환으로) 몇 가지 ExternalStrctures를 구현했으며, 일부는 외부 메모리 교정을 위해 마무리 작업을 구현하려고합니다.Cuis/Squeak/Pharo에서 완결 (테스트 용)하는 방법?
나는 그것에 대한 몇 가지 테스트를 작성하려고하고 있으며, 가비지 수집을 강제로 여러 번 수행하여도 Smalltalk garbageCollect
으로 최종화가 (절대적으로) 트리거되지 않는다고합니다.
파이널 라이저에서 호출하는 함수에 외부 중단 점 (gdb 사용)을 배치했지만 중단 점이 결코 적중되지 않았는지 확인하십시오. 나는 (많은 GC를 실행 한 후에) 객체에 대한 모든 참조를 검사했으며 유일한 참조는 WeakRegistry (allInstances를 사용하여 객체에 있음)입니다.
강제 종료 할 수있는 방법이 있습니까 (Cuis/Pharo/Squeak)?
본 적이 있습니까? Object >> #toFinalizeSend : to : with :? –
나는 고마워. 제 이해는'#toFinalizeSend : to : with'가 원래의 마무리 동작을 대체하지만 강제 종료는 대체하지 않는다는 것입니다. 최종화가 실행되었음을 알리기 위해 사용할 수는 있지만 종료를 강제하지는 않습니다. 나는 내가 다른 방법으로 문제를 해결하는 것이 흥미로울 수 있다고 생각한다. Nice :-) – gera
최종 결정을하는 프로세스에 문제가 있음을 발견했습니다. 어떤 이유로 자동으로 시작되지 않습니다 (이미지를 저장하면 비활성화됩니다). 지금은 그것을 다시 시작하기 위해 수동으로'WeakArray restartFinalizationProcess'를하고, 그 후에는'Smalltalk garbageCollect'가 강제로 종료합니다. 프로세스를 올바르게 설치하는 방법을 이해하면 질문에 답할 것입니다. – gera