JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.rmi.dgc
인터페이스 DGC

모든 슈퍼 인터페이스:
Remote

public interface DGC
extends Remote

DGC 인터페이스는 분산 가베지 콜렉션 알고리즘의 서버 측에 사용되는 것입니다. 이 인터페이스에는 dirty 와 clean 의 2 개의 메소드가 있습니다. dirty 메소드는 리모트 참조가 클라이언트내에서 비정렬화 조작이 되었을 때에 불려 갑니다 (클라이언트는 VMID 로 표현된다). 이것에 대응하는 clean 메소드는 그 리모트 참조에의 참조가 클라이언트내에 없게 되었을 때에 불려 갑니다. dirty 메소드가 실패했을 경우에는 strong 를 true 로 지정한 clean 메소드를 호출해, 그 호출의 일련 번호를 보관 유지할 필요가 있습니다. 이와 같이 하면, 이후에 분산 가베지 수집가로부터 잘못한 호출을 받았을 때에 그것을 검출할 수가 있습니다. 리모트 오브젝트에의 참조는 그 참조를 보관 유지하는 클라이언트로부터 일정한 기간만 대출됩니다. 대출 기간은 dirty 호출을 받았을 때로부터 시작됩니다. 대출이 파기되기 전에, 클라이언트가 가지는 리모트 참조에 대해서 추가의 dirty 메소드를 호출해, 대출을 갱신하는 것은 클라이언트의 역할입니다. 클라이언트가 대출을 파기하기 전에 갱신하지 않으면, 분산 가베지 수집가는 그 리모트 오브젝트는 이제 클라이언트로부터 참조되지 않는 것이라고 봅니다.


메소드의 개요
 void clean (ObjID [] ids, long sequenceNum, VMID  vmid, boolean strong)
          clean 메소드는 ids 로 나타내지는 각 리모트 오브젝트내의 참조 리스트로부터 vmid 를 삭제합니다.
 Lease dirty (ObjID [] ids, long sequenceNum, Lease  lease)
          dirty 메소드는 배열 ids 에 포함되는 오브젝트 식별자에 관련한 리모트 오브젝트 참조의 대출을 요구합니다.
 

메소드의 상세

dirty

public Lease  dirty(ObjID [] ids,
                   long sequenceNum,
                   Lease  lease)
            throws RemoteException 
dirty 메소드는 배열 ids 에 포함되는 오브젝트 식별자에 관련한 리모트 오브젝트 참조의 대출을 요구합니다. lease 에는 클라이언트의 일의의 VM 식별자 (VMID), 및 요구한 대출 기간이 포함됩니다. 로컬 VM 내에서 export 된 각 리모트 오브젝트 마다, 가베지 수집가는 참조 리스트 (오브젝트에의 참조를 보관 유지하는 클라이언트의 리스트)를 준비합니다. 대출이 허가되었을 경우는 가베지 수집가는 그 클라이언트의 VMID 를, ids 내에 나타나는 각 리모트 오브젝트의 참조 리스트에 추가합니다. sequenceNum 파라미터는 가베지 수집가에의 마지막 호출을 검출해 파기하기 위한 일련 번호입니다. 이후, 가베지 수집가에의 호출마다, 일련 번호를 늘려 갈 필요가 있습니다. VMID 는 호스트 주소를 포함해, 클라이언트에 따라서는 보안상의 제한으로부터 호스트 주소를 취득할 수 없기 때문에, VMID 를 생성할 수 없는 클라이언트도 있습니다. 이 경우, 클라이언트는 null 의 VMID 를 사용할 수 있습니다. 분산 가베지 수집가는 그러한 클라이언트에 VMID 를 할당합니다. dirty 메소드는 사용하는 VMID 와 그 리모트 참조에 허가된 대출 기간을 포함한 Lease 오브젝트를 돌려줍니다 (서버는 클라이언트의 요구보다 짧은 대출 기간 밖에 허가하지 않는 것이 있다). 클라이언트가 리모트 오브젝트 참조를 파기했을 때에, 대응하는 clean 메소드를 호출하기 위해서(때문에), 클라이언트는 가베지 수집가가 사용하는 VMID 를 사용하지 않으면 안됩니다. 클라이언트의 VM 는 VM 내에서 참조되는 각 리모트 참조에 대해서, 최초의 dirty 메소드만을 호출합니다 (같은 리모트 오브젝트에 대해서 복수의 참조가 있는 경우에서도 같이). 전대 방편을 계속하는 경우에는 클라이언트는 대출이 파기되기 전에 dirty 메소드를 호출할 필요가 있습니다. 특정의 리모트 오브젝트에의 참조가 없어지면(자), 클라이언트는 그 참조에 관련한 오브젝트 ID 에 대한 clean 메소드를 호출할 필요가 있습니다.

파라미터:
ids - 클라이언트의 호출로 참조가 끝난 상태로서 마크하기 위한 오브젝트 ID
sequenceNum - 순차 순서 번호
lease - 요구한 대출
반환값:
허가한 대출
예외:
RemoteException - dirty 호출이 실패했을 경우

clean

public void clean(ObjID [] ids,
                  long sequenceNum,
                  VMID  vmid,
                  boolean strong)
           throws RemoteException 
clean 메소드는 ids 로 나타내지는 각 리모트 오브젝트내의 참조 리스트로부터 vmid 를 삭제합니다. 일련 번호를 사용해, 마지막 clean 호출을 검출합니다. 인수 strong 가 true 의 경우, clean 의 호출은 실패한 dirty 호출의 결과로서 생긴 것이므로, 이 클라이언트의 vmid 의 일련 번호를 보존해 둘 필요가 있습니다.

파라미터:
ids - 클라이언트의 호출로 미참조로서 마크하기 위한 오브젝트 ID
sequenceNum - 순차 순서 번호
vmid - 클라이언트 VMID
strong - 「strong」clean 호출의 작성
예외:
RemoteException - clean 호출해에 실패했을 경우

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

버그의 보고와 기능의 리퀘스트
이외의 API 레퍼런스 및 개발자용 문서에 대해서는 Java 2 SDK SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Java, Java 2 D, 및 JDBC 는 미국 및 그 외의 나라에 있어서의 미국 Sun Microsystems, Inc. 의 상표 혹은 등록상표입니다.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.