문제

RMI를 통해 사용할 수있는 코드가 있습니다.

내 프로그램이 비정상적으로 종료되면, 나는 naming.unbind ()를 호출하지 않을 것이며, 객체에 대한 참조는 아마도 RMI 레지스트리에 매달려있을 것입니다.

도적 참조가 정리되도록하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

분산 쓰레기 수집기 (DGC)가 있습니다. 임대를 사용하여 오래된 바인딩을 추적하고 사용하지 않으면 수집합니다. 설정 리스 값 바인딩이 만료되는시기를 결정하기 위해 JVM 내보내기의 시스템 속성.

값을 너무 낮게 설정하면 네트워크 트래픽이 증가합니다. 너무 높게 설정하면 너무 오래 참조 할 수 있습니다. 클라이언트 쪽에서 조회 한 후 객체가 라이브인지 확인하거나 Weblogic Smart Stubs와 같은 것을 사용하기 위해 Idempotent 메소드를 호출 할 수 있습니다. 서버 측면에서 레지스트리를 확인할 수 있으며 바인딩이 등록되지 않으면 (오래된 경우) 원격 객체를 폐기하고 새 개체를 내보내거나 그냥 남겨 두십시오 (라이브 인 경우).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top