내가 DESTROY 메서드를 가진 Perl 클래스를 가지고 있다고 가정 해 봅시다. 이 메서드는 파일 핸들이나 데이터베이스 트랜잭션과 같은 외부 리소스를 암시 적으로 해제하는 데 사용됩니다.어떻게 펄에서 오브젝트를 명시 적으로 파기합니까?
이 클래스의 인스턴스가 주어지면 명시 적으로 삭제하려고합니다. 이것의 주 목적은 DESTROY 메서드를 호출하여 외부 리소스를 해제 할 수있게하는 것입니다. 그러나 "객체"자체를 메모리에서 해제하는 것이 추가 이점이됩니다.
어떻게하면됩니까? DESTROY 메서드를 직접 호출하고 해당 개체를 참조하는 변수를 정의하지 않을 것을 고려했습니다. 당신이 자기 참조 구조 (Destructors하고 흥미로운 정보를 그 후 두 단계 가비지 콜렉션 항 참조)이없는 경우
개체가 참조 해제 된 후 정확하게 삭제된다는 것은 확실합니까? 그것을 확인하는 권위있는 출처를 아십니까? 그 종류의 행동은 가비지 컬렉터에 의해 보장되지 않는다고 생각했습니다. – Sam
인용 된 문서 : "개체에 대한 마지막 참조가 사라지면 개체가 자동으로 삭제됩니다". 그러나 내가 말했듯이, 주어진 시점에 외부 리소스를 해제하려는 경우 명시 적으로 설정하십시오. 이것은 perl5 btw를위한 것이며, perl6에는 잠재적으로 차이 수집 스키마가 있습니다. – Mat