KR100732869B1 - 메모리 재이용 방법 - Google Patents

메모리 재이용 방법 Download PDF

Info

Publication number
KR100732869B1
KR100732869B1 KR1020007013199A KR20007013199A KR100732869B1 KR 100732869 B1 KR100732869 B1 KR 100732869B1 KR 1020007013199 A KR1020007013199 A KR 1020007013199A KR 20007013199 A KR20007013199 A KR 20007013199A KR 100732869 B1 KR100732869 B1 KR 100732869B1
Authority
KR
South Korea
Prior art keywords
data
data object
identifier
objects
data objects
Prior art date
Application number
KR1020007013199A
Other languages
English (en)
Other versions
KR20010043785A (ko
Inventor
홀드스워스리챠드제이.
Original Assignee
코닌클리케 필립스 일렉트로닉스 엔.브이.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 코닌클리케 필립스 일렉트로닉스 엔.브이. filed Critical 코닌클리케 필립스 일렉트로닉스 엔.브이.
Publication of KR20010043785A publication Critical patent/KR20010043785A/ko
Application granted granted Critical
Publication of KR100732869B1 publication Critical patent/KR100732869B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • G06F12/0269Incremental or concurrent garbage collection, e.g. in real-time systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File allocation
    • Y10S707/99957Garbage collection

Abstract

식별 포인터에 의해 링크된 데이터 오브젝트들(910-960)을 포함하는 데이터 구조에 할당된 메모리 공간을 재이용하는 방법이 제공되는데, 데이터 오브젝트에 할당된 상기 메모리는 제 1 시스템과 제 2 시스템이 사용되어 재이용되며, 상기 제 1 시스템은, 상기 데이터 구조의 선택된 일부를 상기 포인터들을 따라가며 횡단하고; 상기 데이터 오브젝트가 횡단되었고, 따라서 그 데이터 오브젝트의 포인터들에 의해 참조되는 상기 데이터 오브젝트들은 식별되었음을 나타내는 제 1 식별자와, 상기 데이터 오브젝트가 포인터에 의해 참조되지만, 그 데이터 오브젝트는 아직 횡단되지 않았음을 나타내는 제 2 식별자인 적어도 2개의 식별자들 중 하나를 상기 데이터 오브젝트들에 할당하며, 상기 제 2 시스템은, 관련된 메모리 공간이 재이용되도록, 삭제를 위해 개별 데이터 오브젝트를 선택하며, 상기 제 2 시스템은 상기 개별 데이터 오브젝트에 대한 상기 제 1 시스템 식별자를 판독하고, 상기 제 1 식별자가 존재하면 상기 데이터 오브젝트를 삭제하여 상기 관련된 메모리 공간을 재이용하고, 상기 제 2 식별자가 존재하면 제 3 식별자를 할당하며, 상기 제 1 시스템은 상기 제 3 식별자를 갖는 데이터 오브젝트들에 할당된 상기 메모리 공간을 재이용하도록 동작한다.

Description

메모리 재이용 방법{Memory reclamation method}
본 발명은 메모리 재이용 방법에 관한 것으로, 특히 저장된 데이터 오브젝트에 대해 상충되는 삭제 시도가 행해지는 메모리 재이용 방법에 관한 것이다.
가비지 콜렉션(garbage collection)은 프로그램에 의한 시스템 메모리 공간의 최후 사용 후 시스템 메모리 공간을 자동으로 재이용한다. 가비지 콜렉션 기술들의 많은 예들은, 알.존 등(R. Johns et al)에 의한 "자동 동적 메모리 관리를 위한 가비지 콜렉션-알고리즘(Garbage Collection-Algorithms for Automatic Dynamic Memory Management)"(존 윌리 & 선스 출판사(pub. John Wiley & Sons), 1996년, ISBN 0-471-94148-4, 페이지 1~18), 및 "단일 프로세서 가비지 콜렉션 기술(Uniprocessor Garbage Collection Techniques)"(프랑스 세인트 말로, 1992년 9월, 메모리 관리에 관한 1992년 국제 워크숍 회보(Proceedings of the 1992 International Workshop on Memory Management)의 피.알. 윌슨(P.R. Wilson))에 논의되어 있다. 많은 컴퓨터 프로그램들의 기억 장치의 요구조건은 메모리 할당 및 복구가 프로그래머 또는 컴파일러에 의해 처리됨으로써 간단하고 예측 가능하지만, 특정 데이터 구조들의 수명은 런-타임전에 더 이상 결정될 수 없기 때문에 프로그램의 실행시에 기억장치를 자동으로 재이용하는 것이 불가결이 되는 것 같이 복잡한 실행 패턴들을 갖는 기능적 언어로 되는 경향이 있다.
도 1은 본 발명을 구현하기에 적절한 데이터 처리 시스템의 블록 다이어그램.
도 2 내지 도 4는 3색 마킹 스키마를 사용하는 추적이 진행될 때의 부분적으로 링크된 데이터 오브젝트의 그룹을 나타내는 도면.
도 5는 가비지 콜렉션 프로로세스와 충돌하는 삭제 시도가 이루어진 데이터 오브젝트를 포함하는 도 3의 부분적으로 링크된 데이터 오브젝트들의 그룹을 나타내는 도면.
도 6 및 도 7은 본 발명을 구현하는 메모리 공간을 재이용하는 방법에 의해 삭제가 처리되는 데이터 오브젝트를 나타내는 도면.
도 8은 본 발명을 구현하는 메모리 공간을 재이용하는 방법의 특징을 도시하는 플로우 챠트.
도 9는 본 발명을 구현하는 프로그램, 제 1 가비지 콜렉션 프로세스 및 제 2 가비지 콜렉션 프로세스에 의해 처리된 부분적으로 링크된 데이터 오브젝트들의 그룹을 나타내는 도면.
많은 가비지 콜렉션 재이용 기술들의 공통 특징은, 상기 언급한 윌슨의 참조 문헌에 기술된 바와 같이, 별도로 저장된 데이터 오브젝트들에 의해 이동되는 참조 포인터들에 대해 형성된 데이터 구조를 서서히 횡단하는 것이다. 이 기술은 먼저 다른 저장된 오브젝트들 또는 외부 위치들로부터 데이터 오브젝트들을 링크하는 포인터들을 통하는 경로 또는 경로들을 추적함으로써 도달가능한 모든 저장된 오브젝트들을 마킹하는 것을 포함한다.
다음에, 메모리를 압축하거나 스위핑을 한다. 즉, 재이용할 수 있는 공간을 가진 마킹되지 않은 오브젝트들을 결정하기 위해 메모리에 저장된 모든 오브젝트를 검사한다.
보통, 프로그램 프로세스로부터의 가비지가 가능한 한 빨리 검출되고, 적당한 리소스가 재이용되도록, 가비지 콜렉션 및 재이용 프로세스는 프로그램 프로세스와 병행하여 컴퓨터 상에서 실행되고, 가비지 콜렉션 및 재이용 프로세스는 프로그램 프로세스의 데이터 오브젝트에 의해 점유된 힙(heap)(메모리 영역)상에서 동작한다. 서로 병행하여 실행되고, 동일한 메모리 영역에서 동작하는 2개의 프로세스들의 결과 동시에 동일한 데이터 오브젝트들에서 양자 모두 동작할 수 있었다. 단일 처리 쓰레드만이 2개의 프로세스들에 이용가능한 경우에, 가비지 콜렉션에서의 단계들 및 재이용 프로세스는 프로그램 프로세스의 단계들과 인터리빙된다. 가비지 콜렉션 및 재이용 프로세스의 단일 단계는 데이터 오브젝트 및 참조된 포인터들을 갖는 데이터 오브젝트들을 필연적으로 완전히 처리하지는 않는다.
많은 컴퓨터 프로그램밍 언어들은 데이터 오브젝트들에 의해 이용된 메모리를 수동 재이용하는 기능들을 제공한다. 자동 가비지 콜렉션과는 반대로, 데이터 오브젝트에 의해 이용된 메모리를 수동으로 재이용하기 위하여, 프로그래머는 데이터 오브젝트를 생성한 프로그램내에서부터 적당한 기능을 명시적으로 실행해야만 한다. 실제로, C++과 같은 객체지향 프로그램 언어들의 일반적인 특징은 오브젝트 클래스에 대한 파괴 방법(destructor method)을 정의하는 능력이다. 파괴 방법은 구체적으로 오브젝트 클래스에 대한 프로그래머에 의해 쓰여진 기능이다. 파괴 방법에 의해 수행된 디폴트 동작(default operation)은 힙로부터 연관된 오브젝트를 삭제하는 것이다. 프로그래머는, 파괴 방법이 오브젝트 클래스로부터 생성된 데이터 오브젝트에 대해 실행될 때, 데이터 오브젝트가 컴퓨터의 메모리 힙으로터 자동으로 삭제되기 전에, 오브젝트로부터 포인터들에 의해 참조된 다른 오브젝트들 및 파일 핸들들과 같은, 데이터 오브젝트에 의해 유지된 리소스들이 재이용되도록, 파괴 방법내에서 다른 기능들에 대한 호출을 포함한다. 상기 방법은 특히 링크된 리스트 및 트리 데이터 구조들의 재이용에 있어서 대중적이며, 여기서 링크된 리스트내의 각각의 오브젝트에 대한 파괴자들은 리스트의 끝에 도달할 때까지 반복적으로 호출되어, 단일 파괴 방법 호출로부터 전체 링크된 리스트를 재이용한다. 상기 방법에서, 프로그램이 데이터 오브젝트로 종료됐다는 것을 알게 된 프로그래머는, 오브젝트 및 오브젝트의 리소스들이 오브젝트가 종료되자 마자 규칙적인 형태(orederly fashion)로 재이용될 수 있도록 프로그램에서 파괴 방법을 실행할 수 있었다.
그러나 이러한 수동 메모리 재이용 방법들은 전술한 가비지 콜렉션 및 재이용 방법과 충돌하는 것이 명백하다. 가비지 콜렉션 및 재이용 프로세스가 일련의 링크된 데이터 오브젝트들의 처리를 통한 부분적인 방법이라면, 프로그램 프로세스가 수동 데이터 오브젝트들에 의해 유지된 리소스들을 수동으로 재이용할 때, 다음 시간에 가비지 콜렉션 및 재이용 프로세스가 재개하면, 더 이상 존재하지 않는 데이터 오브젝트의 처리를 시도하여, 에러 상태가 발생되어 잠재적으로 시스템 고장을 일으킨다.
자바(Sun Microsystems Inc.) 가상 머신들에서는 수동으로 메모리를 재이용하는 방법은 제공하지 않는다. 모든 메모리 재이용은 자동 가비지 콜렉터에 의해 수행되어야 한다. 그러나, 자바(Sun Microsystems Inc.)는 다중 처리를 지지하고 다른 가비지 콜렉션 메카니즘들은 다른 강점과 약점을 갖기 때문에(예를 들면, 참조 카운팅들(referece counting)은 가비지로서 참조 0의 데이터 오브젝트들을 신속하게 식별할 수 있지만, 순환 데이터 구조를 가비지로 식별할 수 없는 반면 마크-스윕 알고리즘(mark-sweep algorithm)은 대부분 가비지의 유형들을 식별할 수 있지만, 이를 식별하는 데 많은 시간이 걸린다), 데이터 오브젝트들에 의해 점유된 힙 상에서 다수의 자동 가비지 콜렉터들이 동시에 동작하는 것이 바람직하다. 가비지 콜렉터가 동시에 동작시키기 위해서, 그들은 하나의 가비지 콜렉터가 다른 가비지 콜렉터에 의해 현재 처리되고 있는 데이터 오브젝트를 재이용하고자 할 때 어떠한 충돌 해결 메키니즘을 반드시 가져야한다.
본 발명의 해결점에 도달하기 전에, 다수의 다른 가능한 해결점이 발견되었다. 현재 가비지 콜렉션 및 재이용 프로세스에 의해 처리되는 데이터 오브젝트들이 마킹되어, 수동 재이용 동작 또는 데이터 오브젝트가 다른 가비지 콜렉션 및 재이용 프로세스에 의하여 처리되기 전에, 데이터 오브젝트가 마킹된 것을 발견하였다면, 마크가 체크되어 상기 동작이 중단될 수 있다. 그러나, 상기 동작을 중단함으로써, 데이터 오브젝트에 의하여 유지되는 리소스들의 재이용은 가비지 콜렉션과 데이터 오브젝트를 가비지로서 인지하고, 장차 그 데이터 오브젝트를 재이용하는 재이용 프로세스에 의존하게 된다 - 이 재이용은 미래의 어떤 확실하지 않은 시각에 이루어질 수 있으며, 또는 상기 프로그램 프로세스가 영구히 실행되어 데이터 오브젝트를 참조하는 유효 포인터를 유지한다면, 데이터 오브젝트는 가비지로서 전혀 인지될 수 없기 때문에 전혀 재이용되지 않는다.
대안적으로, 가비지 콜렉션와 및 재이용 프로세스는 처리되는 데이터 오브젝트(들)에 상호 배타적 락(mutual exclusion lock)(수기 신호(semaphores)와 같은 방법에 의해)을 건 경우이다. 그러나, 그러한 락은 프로그램 프로세스가 데이터 오브젝트들을 액세스하고 조작하는 것을 방지하며, 데이터 오브젝트(들)에의 액세스가 필요한 시점에 락(들)이 해제되거나 프로그램 프로세스가 실패하게 될 때까지 프로그램 프로세스의 실행을 적어도 중지할 것이다.
본 발명에 따라서, 식별 포인터들에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조에 할당된 메모리 공간을 재이용하는 방법이 제공되며, 데이터 오브젝트에 할당된 상기 메모리는 제 1 시스템과 제 2 시스템이 사용되어 재이용되며, 상기 제 2 시스템은, 관련된 메모리 공간이 재이용되도록, 삭제를 위해 개별 데이터 오브젝트를 선택하며,
상기 제 1 시스템은, 상기 데이터 구조의 선택된 일부를 상기 포인터들을 따라가며 횡단하고; 상기 데이터 오브젝트가 횡단되었고, 따라서 그 데이터 오브젝트의 포인터들에 의해 참조되는 상기 데이터 오브젝트들은 식별되었음을 나타내는 제 1 식별자와, 상기 데이터 오브젝트가 포인터에 의해 참조되지만, 그 데이터 오브젝트는 아직 횡단되지 않았음을 나타내는 제 2 식별자인 적어도 2개의 식별자들 중 하나를 상기 데이터 오브젝트들에 할당하며,
상기 제 2 시스템은 상기 개별 데이터 오브젝트에 대한 상기 제 1 시스템 식별자를 판독하고, 상기 제 1 식별자가 존재하면 상기 데이터 오브젝트를 삭제하여 상기 관련된 메모리 공간을 재이용하고, 상기 제 2 식별자가 존재하면 제 3 식별자를 할당하며, 상기 제 1 시스템은 상기 제 3 식별자를 갖는 데이터 오브젝트들에 할당된 상기 메모리 공간을 재이용하도록 동작한다.
본 발명의 장점은 제 1 시스템이 데이터 오브젝트를 아직 횡단하지 않았다면, 제 2 시스템이 데이터 오브젝트를 삭제하지 않고 마커를 부가하여 제 1 시스템이 준비될 때에만 삭제가 일어나도록 하는 것이다.
바람직하게, 제 1 시스템은 자동 가비지 콜렉션 시스템을 포함한다. 따라서 본 발명은 자동 가비지 콜렉션과 수동 메모리 재이용 간의 충돌을 제거한다. 바람직하게, 제 1 시스템은 또한 식별자를 갖지 않는 데이터 오브젝트들에 할당된 메모리 공간을 재이용하도록 동작한다. 제 2 시스템은 데이터 오브젝트들의 수동 삭제일 수 있다. 이것은 오브젝트들이 더 이상 필요하지 않을 때 오브젝트들의 생성 프로그램에 의한 데이터 오브젝트들의 삭제의 형태일 수 있다. 대안적으로 그리고 바람직하게, 제 2 시스템은 자동 가비지 콜렉션을 포함한다. 그리하여, 본 발명은 2개의 자동 가비지 콜렉션 시스템들 간의 충돌을 제거한다. 바람직하게, 제 2 시스템은 또한 제 3 식별자를 갖는 데이터 오브젝트들로부터의 포인터들에 의해 참조된 데이터 오브젝트들에 할당되는 메모리 영역을 재이용한다.
본 발명은 또한 본 발명의 상기 방법을 구현하기 위하여 데이터 처리 장치를 제공한다.
도 1은 예를 들어 가상 환경에서 데이터를 규정하는 브라우저처럼 시스템을 구성할 수 있는 다수의 소프트웨어 유틸리티들을 위해 호스트로서 기능하는 개인용 컴퓨터 등의 데이터 처리 시스템을 나타낸다. 상기 시스템은 어드레스 데이터 버스(12)를 통해서 RAM(Random access memory)과 ROM(read only memory)(14,16)에 링크되는 중앙 처리 유닛(CPU)(10)을 포함한다. 이들 메모리들은 하나 또는 몇 개의 집적 회로 디바이스들로 구성될 수 있으며, 시스템 하드디스크와 CD-ROM과 같은 부가적인(제거가능한) 메모리 디바이스들로부터의 판독 수단에 의해 보강된다. 본 발명은 특히 CPU(10)의 제어 하에서 RAM(14)의 작업영역에 대한 메모리 관리의 특히 구현되고, 이것에 대한 제어 프로그램은 ROM(16)에서 처음으로 시작되고, 파워-업시 운영 시스템에 의해 로딩된다. 또한, CPU(10)에는 버스(12)를 통해 키보드와 마우스나 트랙볼과 같은 커서 컨트롤 및 선택 디바이스를 적절히 구비한 제 1 및 제 2 사용자 입력 디바이스들(18, 20)에 링크되고, 시스템으로부터의 오디오 출력은 오디오 프로세스 스테이지(24)에 의해 구동되는 하나 이상의 스피커들(22)을 통하여 행해진다. 시스템으로부터의 비디오 출력은 CPU(10)의 제어하에 있는 디스플레이 드라이버 스테이지에 의해 구동된 디스플레이 스크린(26)상에 표시된다. 시스템을 위한 다른 데이터의 소스는 예컨대, 인터넷과 같은 온라인을 통하는 원격 사이트이고, 이를 위해 시스템은 버스(12)에 연결된 네트워크 인터페이스(30)를 구비한다.
도 2 내지 도 4는 3색 마킹 스키마를 이용하여 증분 가비지 콜렉팅을 추적하는 기본 원리를 개략적으로 도시하고, 그것의 용어는 후술될 예에서 사용된다. 증분 콜렉터들의 구체적 특징은, 상기 절차가 연속적으로 수행되는 것이 아니라, 실행 중에 긴 중단이 도입되는 것을 피하기 위해, 프로그램의 실행 주기에서 산재된 이산적 단계(discrete step)에서 수행되는 것이다. 3색 스키마는, 포인터에 의해 링크된 메모리 오브젝트에 의해 형성된 "네트워크"를 통해 확산될 때의 마킹(marking) 절차를 설명하는 편리한 방법이다. 스키마에서, 횡단 절차(traversal process)에 의해 도달되고 지나간 오브젝트(즉, 횡단(traversal)은 바로 아래에 링크된 모든 자손들(descendents)에 도달한다)는 흑색이고, 횡단에 의해 도달되고 실제의 또는 잠재적 직계자손이 도달하지 못한 오브젝트는 회색이고, 모든 다른 오브젝트는 백색이다.
도 2 내지 도 4의 부분적으로 링크된 오브젝트의 콜렉션에서, 도 2에는 오브젝트(35)에서 시작해서 바깥쪽/아래쪽으로 넓어지는 추적 절차의 제 1 증분 스테이지후의 상태를 도시하고, 여기서 오브젝트(35)는 흑색으로 마킹되고 오브젝트(35)를 포인터로 나타낸 3개의 오브젝트(36, 38, 39)는 회색으로 마킹된다. 도 3은 횡단에 의해 도달되고 따라서 회색으로 마킹된, 오브젝트들(36, 38, 39)의 자손 오브젝트들(40, 41, 42, 44, 45)을 갖는, 다른 증분 스테이지의 상태를 도시한다. 그것들의 모든 자손이 도달한 후에, 오브젝트들(36, 38, 39)은 이 스테이지에서 흑색으로 마킹된다. 도 4는 링크될 오브젝트가 남아있지 않은 것으로 결정되고 오브젝트들(40, 41, 42, 44, 45)이 흑색으로 마킹된 최종 스테이지를 나타낸다. 이것이 마크 단계(mark phase)의 최종 결과이고, 포인터들이 없는 두 개의 "미도달" 오브젝트들(37, 43)이 존재함을 나타낸다. 이러한 오브젝트들은 여전히 아직도 백색으로 마킹되며, 가비지되어야 하고 삭제되어도 좋다는 것을 나타낸다.
3색 마킹 스키마는, 절차의 증분 성질을 다루는 다양한 기술을 포함하는, 종래에 인용된 윌슨의 참고 문헌에서 더 자세히 논의되고, 데이터 구조의 배치는 프로그램 실행을 산재한 세그먼트(interspersed segment)가 위치한 포인트들의 배치를 이동시키는 것에 의해 횡단하는 동안 변화될 수 있다. 주의할 점은, 도 2 내지 도 4에서의 오브젝트의 계층적 레이아웃이 순전히 예시를 위한 것이라는 점이다. 실질적으로, 오브젝트는 이용가능한 메모리 전체에 걸쳐 확산되고, 계층구조는 링크용 포인터의 배치만으로 결정된다.
모순되는 삭제 시도의 문제는, 도 3의 부분적으로 링크된 데이터 오브젝트의 그룹을 도시하는 도 5를 참조로 하여 설명될 것이다. 증분 가비지 콜렉터는 데이터 오브젝트들(35, 36, 38 및 39)을 수행했고, 가비지 콜렉터가 다시 시작될 때 실행될 예정인 데이터 오브젝트들(40, 41, 42, 44 및 45)을 참조한다. 그러나, 데이터 오브젝트(38)를 처리하는 가비지 콜렉터와 데이터 오브젝트(42)를 처리하는 가비지 콜렉터 사이에서, 가비지 콜렉터 외부의 처리가 데이터 오브젝트(38)에 대한 파괴 동작을 실행하고, 차례대로 데이터 오브젝트(42)에 대한 파괴 동작을 실행한다. 가비지 콜렉터가 이어서 재개되고, 데이터 오브젝트로 예견되는 참조를 따라갈 때, 어떤 데이터 오브젝트도 전혀 발견할 수 없고, 그 경우 에러 상태가 발생할 경우,대안적으로, 가비지 콜렉터가 새로운 데이터 오브젝트는 데이터 오브젝트(38)에 링크되고, 차례대로 데이터 오브젝트(35)에 링크된다고 부정확하게 믿을 경우, 가비지 콜렉터로 하여금 외부 처리는 데이터 오브젝트(42)에 의해 이전에 점유되었던 메모리 영역에서 다른 데이터 오브젝트를 생성할 수 잇을 것이다.
본 발명을 구현하는 메모리 공간 재이용 방법은 도 6을 참조로 하여 설명된다. 프로그램은 자손 데이터 오브젝트(52)에 링크된 힙(heap) 데이터 오브젝트(50)에서 생성되는데, 상기 자손 데이터 오브젝트(52)는 데이터 오브젝트(56)로 링크된 자손 데이터 오브젝트(54)에 차례대로 링크된다. 프로그램은 데이터를 저장하기 위해 데이터 오브젝트(50 내지56)을 이용하고 그후에 실행동안 오브젝트와 저장된 데이터를 조작한다. 이 예에서, 가비지 콜렉터는 데이터 오브젝트(50 및 52)를 처리했고, 다음 재시작 했을 때, 데이터 오브젝트(54)를 처리할 예정이다. 실행 기간 중에, 프로그램은 데이터 오브젝트(52)와 그것의 자손들은 더 이상 필요하지 안다는 것을 결정하고, 각각의 자손에 대하여 파괴자를 반복적으로 호출하기 위해 쓰여진 데이터 오브젝트(52)에 대한 파괴 방법을 실행한다. 상술된 범위까지 당분야에서 알려져 있다.
본 발명은, 자동 가비지 콜렉션과 호환되게 하기 위해 파괴 방법과 같은, 알려진 수동 메모리 재이용 동작을 효과적으로 변경한다. 변경된 파괴 방법은 오브젝트의 데이터 필드로부터 데이터 오브젝트(52) 마킹 상태를 결정한다. 상태가 흑색이 되는 것이 발견했을 때, 파괴자는, 각각의 자손 데이터 오브젝트, 이 경우 데이터 오브젝트(54)에 대한 파괴자를 호출한다. 데이터 오브젝트(54)에 대한 파괴자는 마킹 상태가 파괴자와 가비지 콜렉터 사이의 충돌을 나타내는, 회색이 되도록 결정한다. 데이터 오브젝트(54)에 대한 파괴자는 그러므로, 데이터 오브젝트(54)를 삭제하는 대신, 오브젝트의 삭제의 요구를 나타내는 적색으로 데이터 오브젝트(54)의 마킹 상태를 변경시킨다. 이 후 데이터 오브젝트(54)에 대한 파괴자는 데이터 오브젝트(56)의 마킹 상태를 백색으로 결정하는, 데이터 오브젝트(56)에 대한 파괴자를 반복적으로 호출하고, 데이터 오브젝트(56)를 삭제하고, 데이터 오브젝트(54)에 대한 파괴자로 돌아간다. 이 파괴자는 힙로부터 데이터 오브젝트(52) 삭제에 의해 종료되는 데이터 오브젝트(52)에 대한 파괴자로 돌아가는 실행을 차례대로 종료한다. 만일 모든 데이터 오브젝트가 흑색 또는 백색의 마킹 상태를 가졌다면, 충돌은 일어나지 않고, 데이터 오브젝트는 반복적으로 삭제될 수 있다. 대신, 데이터 오브젝트(54)는 적색 마킹 상태인 채로 있다.
가비지 콜렉터는 도 7에서 도시된 데이터 오브젝트의 마킹을 재개한다. 참조된 데이터 오브젝트를 처리할 때, 각각의 마킹 상태가 체크된다. 데이터 오브젝트(54)를 처리할 때, 가비지 콜렉션은 그 상태가 적색임을 발견한다. 자손 데이터 오브젝트가 처리될 때, 회색으로 마킹된 데이터 오브젝트의 상태가 흑색으로 변경되는 것과 동일한 방식으로, 적색으로 마크된 데이터 오브젝트는 백색으로 변경된다. 이것은 자동 테스트-셋 동작으로서 수행된다(만약 (상태=적색)이면 상태=백색). 데이터 오브젝트는 이 후 가비지 콜렉션의 재이용 단계동안 다른 가비지와 함께 재이용된다.
본 발명의 양호한 실시예에서, 마킹 단계 동안 가비지 콜렉터에 의해 처리된 적색 상태의 오브젝트는 재이용 단계를 기다리지 않고 가비지 콜렉터에 의해 즉시 삭제된다.
본 발명의 특징을 구현하는, 파괴자의 동작 또는 다른 수동 기능은 재이용을 위해 쓰여진 데이터 오브젝트의 상태에 의존할 것이다. 예컨대, 만약 데이터 오브젝트가 삭제되고 또는 삭제를 요구받은 두 개의 친(parent) 데이터 오브젝트의 자손이라면(데이터 오브젝트가 순환 구조에서 링크된 것과 같이), 친 데이터 오브젝트에 대한 수동 재이용 기능이 자손 데이터 오브젝트의 수동 재이용을 위해 반복적으로 호출하는 코드 없이 쓰여진 경우, 데이터 오브젝트는 삭제되지 않는 것이 바람직하다. 실제로, 자동 가비지 콜렉션은 메모리 힙을 통한 다음 마킹 단계에 가비지로서 고아 자손(orphan descents)을 인식하도록 오직 가장 높은 데이터 오브젝트가 삭제되거나 또는 삭제를 요구받은 것을 나타내는 적색으로 마크되는 것이 바람직하다.
본 발명의 특징을 구현하는 수동 재이용의 다른 예는, 데이터 오브젝트가 가비지 콜렉션과 충돌되는 삭제 요구를 나타내는 적색으로 마크됐을 때, 적색 마크는 트리의 아래로 전파되거나 또는 적색 마크된 데이타 오브젝트의 다른 자손으로 리스트된다.
도 8은 본 발명의 특징을 설명하는 플로우 차트이다. 단계 800에서, 힙상에 데이터 구조의 형식으로 다수의 데이터 오브젝트를 생성한 프로그램은, 그 중 몇몇은 더 이상 사용되지 않는, 현재 사용되고 있는 데이터 구조에 대한 각각의 톱 레벨 (루트) 데이터 오브젝트로 참조를 획득하기 위해서 조회된다. 이런 참조는 풀(pool)에 저장된다. 후술될 설명에서 이해되듯이, 풀은 가비지 콜렉터에 의해 처리된 데이터 오브젝트를 저장하기 위해서 사용되고, 가비지 콜렉터가 데이터 구조를 횡단할 때, 참조는 풀에 부가되고, 풀로부터 제거된다. 본 발명의 방법에 따른 처리동안, 자손 데이터 오브젝트의 참조는 풀로 부가되고, 각각의 데이터 오브젝트가 완벽히 처리될 때, 각각의 참조는 풀로부터 제거된다. 힙내의 모든 데이터 오브젝트의 마킹 상태는 단계 810에서 백색으로 만들어진다. 풀에서 참조된 각각의 데이터 오브젝트에 대해, 만약 마킹 상태가 백색인 것으로 밝혀지면, 단계 820에서 회색으로 변경되고, 각각의 자손 데이터 오브젝트의 참조는, 있다면, 단계 830에서 풀에 부가된다. 데이터 오브젝트의 참조가 풀에서 유지되어, 다음에 다시 수행된다. 만약 데이터 오브젝트의 마킹 상태가 회색으로 밝혀지면, 단계 840에서 흑색으로 변경되고, 그 데이터 오브젝트에 대한 참조가 단계 850에서 풀로부터 제거된다. 만약 데이터 오브젝트의 마킹 상태가 적색으로 밝혀지면, 단계 860에서 백색으로 변경되고, 데이터 오브젝트에 대한 참조는 단계 870에서 풀로부터 제거된다. 도 6 및 도 7을 참조하여 위에서 논의된 바와 같이, 오브젝트는 회색 마킹 상태와 충돌하는 수동 삭제 동작에 의해 적색 마킹 상태가 할당된다. 회색에서 적색으로의 마킹 상태의 변경은 수동 삭제 동작 중에 수행된다.
이러한 방식에서, 일단 풀안의 데이터 오브젝트에 대한 모든 참조가 소진되고, 만일 그것들이 프로그램에 의해 유지된 루트 데이터에 링크됐고 삭제를 요구받지 않았다면, 힙내의 모든 데이터 오브젝트는 흑색의 마킹 상태를 갖고, 그렇지 않으면 백색이 된다. 가비지 콜렉션의 후속 재이용 단계는 스위핑(sweeping), 압축(compaction)등과 같은 방법에 의해 백색 마킹 상태를 갖는 데이터 오브젝트에 의해 확보된 메모리를 재이용한다.
본 발명의 삭제 요구 메카니즘을 사용되는 프로그램 언어 및 컴파일러에 따라 많은 방법으로 구현됨이 당업자들에게 명백해질 것이다.
파괴 방법의 이용을 허용하는 이러한 객체지향 언어에 대해, 일단 파괴 방법이 호출되면, 데이터 오브젝트의 삭제는 자동적으로 행해진다. 이 경우 본 발명을 실현하기 위해, 만약 오브젝트의 적색 마킹이 발견되면, 컴파일러가 변조되어, 파괴 방법은 중단된다. 대안으로, 데이터 오브젝트들을 부활시킬 수 있는 파괴자내에 파이날리저 방법을 포함하는 것이 허용될 수 있고, 이 경우 만약 데이터 오브젝트의 적색 마킹이 발견되면, 파이날리저(finaliser)가 데이터 오브젝트를 부활시킬 수 있다.
데이터 오브젝트에 대해 삭제 또는 할당 해제(de-allocation) 함수를 사용할 수 있는, 보다 덜 복잡한 언어의 경우, 프로그래머는 삭제 또는 할당 해제 전에 데이터 오브젝트의 마킹 상태를 체크하는 적절한 함수를 기술할 수 있다.
리스트 또는 트리의 반복적 삭제와 같은, 삭제 함수 또는 파괴 방법에 의해 수행되는 다른 동작은 각각의 함수로부터 적절한 동작을 호출하는 프로그래머에 달려있다.
도 9는 본 발명을 구현하는 프로그램, 제 1 가비지 선택 처리 및 제 2 가비지 선택 처리에 의해 수행된 부분적으로 링크된 데이터 오브젝트의 그룹을 도시한다. 자바(Sun Microsystems Inc.) 가상 머신은 제 1 쓰레드(thread)에서 실행되는 프로그램 프로세스(900)를 갖는다. 프로그램 프로세스(900)는 힙(905)상에 다수의 데이터 오브젝트들(910-960)을 작성하였다. 데이터 오브젝트의 일부는 트리(915-935) 및 리스트(950-960) 데이터 구조를 형성하기 위해 포인터에 의해 링크된다. 상기 프로그램 프로세스는 루트 데이터 오브젝트들(910, 915 및 970)을 통해 데이터 오브젝트를 액세스한다. 오브젝트들(940 및 950-960)과 같은 루트 데이터 오브젝트로부터 도달 가능하지 않은 이들 데이터 오브젝트들은 더 이상 프로그램 프로세스로 액세스 가능하지 않으므로, 가비지이다. 제 2 쓰레드에서 실행되는 제 1 가비지 콜렉션 프로세스(980)는 힙상에서 동작된다. 가비지 콜렉션 프로세서(900)는 참조되지 않은 데이터 오브젝트를 검출하고 삭제하기 위해 참조-카운트 알고리즘(reference-count algorithm)을 이용한다. 제 3 쓰레드에서 실행되는 제 2 가비지 콜렉션 프로세스(990)는 또한 힙상에서 동작한다. 가비지 콜렉션 프로세스(990)는 가비지를 검출하고 재이용하기 위해, 도 8을 참조하여 상술된 마크-스위프 알고리즘(mark-sweep algorithm)을 이용한다. 힙 처리시, 제 1 가비지 콜렉션 프로세스(980)는 참조되지 않은 데이터 오브젝트(940)를 검출하고 삭제를 시도한다. 그러나, 제 2 가비지 콜렉션 프로세스(990)는 이 오브젝트를 현재 처리 중이다(그러므로 회색으로 마크되어 있다). 제 1 가비지 콜렉션 프로세스는 데이터 오브젝트의 마크가 회색 상태인 것을 검출하고, 그것을 삭제하는 대신에 마킹 상태를 적색으로 변경한다. 제 2 가비지 콜렉션 프로세스(990)는 도 8를 참조하여 설명한 것과 같은 처리를 계속하고 한편 전술한 바와 같이 재시작 되었을 때, 제 1 가비지 콜렉션 프로세스(980)는 적색으로 마크된 데이터 오브젝트를 삭제한다.
비록 소프트웨어 구현에 관하여 주로 정의되었지만, 상술된 기능적 특징은 하드웨어 또는 하드웨어와 소프트웨어와의 조합에 의해서도 동일하게 구현 가능함을 당업자는 알 수 있을 것이다.
본 명세서를 읽음으로서, 다른 변경은 당업자에게 명백해진다. 이러한 변경은 디자인, 제조, 및 데이터 처리의 이용 및 저장 장치 및 디바이스 및 그것의 구성부에서 이미 잘 알려진 다른 특징 및 이미 본 명세서에서 상술된 특징을 대신하거나 또는 부가되어 이용되는 특징을 포함할 수 있다.

Claims (10)

  1. 식별 포인터들에 의해 링크된 데이터 오브젝트들의 데이터 구조에 할당된 메모리 공간을 재이용(reclaiming)하는 방법으로서, 데이터 오브젝트들에 할당된 상기 메모리는 2가지 공정에 의해 재이용되는, 메모리 공간 재이용 방법에 있어서,
    제 1 공정에서, 상기 데이터 구조의 선택된 일부를 상기 포인터들을 따라가며 횡단하는 단계;
    상기 데이터 오브젝트가 횡단되었고, 따라서 그 데이터 오브젝트의 포인터들에 의해 참조되는 상기 데이터 오브젝트들이 식별되었음을 나타내는 제 1 식별자를 할당하는 단계,
    상기 데이터 오브젝트가 포인터에 의해 참조되지만, 그 데이터 오브젝트는 아직 횡단되지 않았음을 나타내는 제 2 식별자를 할당하는 단계,
    제 3 식별자를 가진 데이터 오브젝트들에 할당된 상기 메모리 공간을 재이용하는 단계를 포함하고,
    제 2 공정에서, 상기 개개의 데이터 오브젝트들에 대한 상기 식별자를 판독하는 단계;
    상기 제 1 식별자가 존재하면 메모리 공간을 재이용하기 위해 상기 데이터 오브젝트를 삭제하는 단계;
    상기 제 2 식별자가 존재하면 상기 제 3 식별자를 할당하는 단계를 포함하는, 메모리 공간 재이용 방법.
  2. 제 1 항에 있어서,
    상기 제 1 공정은 자동 가비지 콜렉션 공정(automatic garbage collection system)을 포함하는, 메모리 공간 재이용 방법.
  3. 제 2 항에 있어서,
    상기 제 2 공정은 다른 자동 카비지 콜렉션 공정인, 메모리 공간 재이용 방법.
  4. 제 1 항에 있어서,
    상기 제 1 공정은 식별자를 갖지 않은 데이터 오브젝트들에 할당된 상기 메모리 공간을 재이용하는 단계를 포함하는, 메모리 공간 재이용 방법.
  5. 제 1 항에 있어서, 상기 삭제하는 단계는 데이터 오브젝트들의 수동 삭제 공정을 포함하는, 메모리 공간 재이용 방법.
  6. 제 1 항에 있어서,
    상기 제 2 공정은, 데이터 오브젝트들이 더 이상 필요치 않을 때 상기 오브젝트들의 생성 프로그램의 일부를 포함하는, 메모리 공간 재이용 방법.
  7. 제 1 항에 있어서,
    상기 제 1 공정은 상기 제 3 식별자를 갖는 상기 데이터 오브젝트로부터의 포인터들에 의해 참조된 데이터 오브젝트들에 할당된 메모리 공간을 재이용하는 단계를 포함하는, 메모리 공간 재이용 방법.
  8. 기계에 의해 판독 가능하고, 제 1 항의 방법 단계들을 실행하기 위한 명령들의 하나 이상의 프로그램들을 인코딩하는 프로그램 저장 장치.
  9. 식별 포인터들에 의해 링크된 데이터 오브젝트들을 포함하는 데이터 구조를 구비한 랜덤 액세스 메모리와 결합된 데이터 프로세서를 포함하는 데이터 처리 장치로서, 상기 프로세서는 저장된 다수의 데이터 오브젝트들에 대해 동작하기 위해,
    상기 포인터들을 따라가며 상기 데이터 구조의 선택된 일부를 횡단하고, 상기 데이터 오브젝트가 횡단되었고, 그 데이터 오브젝트의 포인터들에 의해 참조되는 상기 데이터 오브젝트들이 식별되었음을 나타내는 제 1 식별자와, 상기 데이터 오브젝트가 포인터에 의해 참조되지만, 그 데이터 오브젝트는 아직 횡단되지 않았음을 나타내는 제 2 식별자인 적어도 2개의 식별자들 중 하나를 상기 횡단된 데이터 오브젝트들에 할당하는, 제 1 수단; 및
    관련된 메모리 공간이 재이용되도록, 삭제를 위해 개별 데이터 오브젝트를 선택하는 제 2 수단을 제공하도록 구성되고,
    상기 제 2 수단은 상기 개별 데이터 오브젝트에 대한 상기 제 1 식별자를 판독하고, 상기 제 1 식별자가 존재하면 상기 데이터 오브젝트를 삭제하여 상기 관련된 메모리 공간을 재이용하고, 상기 제 2 식별자가 존재하면 제 3 식별자를 할당하며, 상기 제 1 수단은 상기 제 3 식별자를 갖는 데이터 오브젝트들에 할당된 상기 메모리 공간을 재이용하도록 동작하는, 데이터 처리 장치.
  10. 제 9항에 있어서,
    상기 제 1 수단은 상기 제 3 식별자를 갖는 데이터 오브젝트를 삭제하는, 데이터 처리 장치.
KR1020007013199A 1999-03-23 2000-03-07 메모리 재이용 방법 KR100732869B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GBGB9906629.2A GB9906629D0 (en) 1999-03-23 1999-03-23 Memory reclamation method
GB9906629.2 1999-03-23

Publications (2)

Publication Number Publication Date
KR20010043785A KR20010043785A (ko) 2001-05-25
KR100732869B1 true KR100732869B1 (ko) 2007-06-28

Family

ID=10850166

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007013199A KR100732869B1 (ko) 1999-03-23 2000-03-07 메모리 재이용 방법

Country Status (7)

Country Link
US (2) US6487563B1 (ko)
EP (1) EP1080411B1 (ko)
JP (1) JP2002540503A (ko)
KR (1) KR100732869B1 (ko)
DE (1) DE60032685T2 (ko)
GB (1) GB9906629D0 (ko)
WO (1) WO2000057277A1 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6906823B1 (en) * 2000-05-15 2005-06-14 International Business Machines Corporation Input interface for a raster object memory in a method, system and program
US6725444B2 (en) * 2000-12-14 2004-04-20 Communication Technologies, Inc. System and method for programmable removal of sensitive information from computing systems
US6654773B2 (en) * 2001-02-27 2003-11-25 Tajea Corporation Method of deterministic garbage collection
US7076511B1 (en) * 2002-05-07 2006-07-11 Oracle International Corporation Simplified deallocation of memory for programming objects
US7398531B2 (en) * 2002-05-07 2008-07-08 Oracle International Corporation Providing common memory management code to objects that are instances of different classes
US7340493B2 (en) 2003-07-02 2008-03-04 International Business Machines Corporation System and method for reducing memory leaks in virtual machine programs
US20060074990A1 (en) * 2004-09-28 2006-04-06 International Business Machines Corporation Leaf avoidance during garbage collection in a Java Virtual Machine
KR100706808B1 (ko) 2006-02-03 2007-04-12 삼성전자주식회사 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법
US7913003B2 (en) * 2006-02-24 2011-03-22 Intel Corporation Reclaim algorithm for fast edits in a nonvolatile file system
US7827366B1 (en) * 2006-10-31 2010-11-02 Network Appliance, Inc. Method and system for providing continuous and long-term data protection for a dataset in a storage system
US8504596B2 (en) * 2007-07-25 2013-08-06 Apple Inc. Extended garbage collection
US7882159B2 (en) * 2007-07-25 2011-02-01 Apple Inc. Associative references in a garbage collected programming environment
US8224875B1 (en) * 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
US8224874B2 (en) * 2010-01-05 2012-07-17 Symantec Corporation Systems and methods for removing unreferenced data segments from deduplicated data systems
US9378138B2 (en) * 2011-06-29 2016-06-28 International Business Machines Corporation Conservative garbage collection and access protection
US9053017B2 (en) * 2011-09-09 2015-06-09 Microsoft Technology Licensing, Llc Managing object lifetime in a cyclic graph
US8595743B2 (en) 2012-05-01 2013-11-26 Concurix Corporation Network aware process scheduling
US8726255B2 (en) 2012-05-01 2014-05-13 Concurix Corporation Recompiling with generic to specific replacement
US8650538B2 (en) 2012-05-01 2014-02-11 Concurix Corporation Meta garbage collection for functional code
US9417935B2 (en) 2012-05-01 2016-08-16 Microsoft Technology Licensing, Llc Many-core process scheduling to maximize cache usage
US9047196B2 (en) 2012-06-19 2015-06-02 Concurix Corporation Usage aware NUMA process scheduling
US8700838B2 (en) 2012-06-19 2014-04-15 Concurix Corporation Allocating heaps in NUMA systems
US9575813B2 (en) 2012-07-17 2017-02-21 Microsoft Technology Licensing, Llc Pattern matching process scheduler with upstream optimization
US8707326B2 (en) 2012-07-17 2014-04-22 Concurix Corporation Pattern matching process scheduler in message passing environment
US8793669B2 (en) 2012-07-17 2014-07-29 Concurix Corporation Pattern extraction from executable code in message passing environments
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US8656134B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed on executing code
US8656135B2 (en) 2012-11-08 2014-02-18 Concurix Corporation Optimized memory configuration deployed prior to execution
US8607018B2 (en) 2012-11-08 2013-12-10 Concurix Corporation Memory usage configuration based on observations
US20130219372A1 (en) 2013-03-15 2013-08-22 Concurix Corporation Runtime Settings Derived from Relationships Identified in Tracer Data
US20140304478A1 (en) * 2013-04-05 2014-10-09 Nec Laboratories America, Inc. Space Reclamation of Objects in a Persistent Cache
US9747088B2 (en) 2013-04-22 2017-08-29 Embarcadero Technologies, Inc. Automatic reference counting
US10013217B1 (en) 2013-06-28 2018-07-03 EMC IP Holding Company LLC Upper deck file system shrink for directly and thinly provisioned lower deck file system in which upper deck file system is stored in a volume file within lower deck file system where both upper deck file system and lower deck file system resides in storage processor memory
US9430492B1 (en) 2013-06-28 2016-08-30 Emc Corporation Efficient scavenging of data and metadata file system blocks
US10114844B2 (en) * 2015-11-30 2018-10-30 International Business Machines Corporation Readiness checker for content object movement
US10423581B1 (en) * 2016-03-30 2019-09-24 EMC IP Holding Company LLC Data storage system employing file space reclaim without data movement
US10223163B2 (en) * 2016-07-14 2019-03-05 Microsoft Technology Licensing, Llc Workflow-based object destruction
US9933945B1 (en) 2016-09-30 2018-04-03 EMC IP Holding Company LLC Efficiently shrinking a dynamically-sized volume
US11221947B2 (en) * 2018-07-27 2022-01-11 Red Hat, Inc. Concurrent garbage collection with minimal graph traversal
CN111522645B (zh) * 2020-04-29 2023-09-12 抖音视界有限公司 对象的处理方法、装置、电子设备及计算机可读存储介质
US11308267B1 (en) * 2020-09-25 2022-04-19 UiPath, Inc. Artifacts reference creation and dependency tracking
CN113419864B (zh) * 2021-07-16 2023-04-07 抖音视界有限公司 一种应用内存管理方法、装置、设备以及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5485613A (en) * 1991-08-27 1996-01-16 At&T Corp. Method for automatic memory reclamation for object-oriented systems with real-time constraints
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
US5535390A (en) * 1994-07-22 1996-07-09 Hildebrandt; Thomas H. Method for reusing temporaries and reclaiming shared memory
US5848423A (en) * 1997-04-23 1998-12-08 Sun Microsystems, Inc. Garbage collection system and method for locating root set pointers in method activation records
US6098089A (en) * 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5903899A (en) * 1997-04-23 1999-05-11 Sun Microsystems, Inc. System and method for assisting exact Garbage collection by segregating the contents of a stack into sub stacks
GB9721659D0 (en) 1997-10-14 1997-12-10 Philips Electronics Nv Space-limited marking structure for tracing garbage collectors
US6308185B1 (en) * 1998-03-06 2001-10-23 Sun Microsystems, Inc. Methods and apparatus for generational dynamic management of computer memory
US6317756B1 (en) * 1998-10-07 2001-11-13 International Business Machines Corporation On-the-fly garbage collector

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ATKINS M. C. et al : "The active deallocation of objects in object-oriented systems", software practice & experience, GB, John Wiley & Sons Ltd. Chichester,Vol.18, No.11, 1 November 1988, pp.1073-1089

Also Published As

Publication number Publication date
EP1080411A1 (en) 2001-03-07
DE60032685D1 (de) 2007-02-15
JP2002540503A (ja) 2002-11-26
WO2000057277A1 (en) 2000-09-28
US7308466B2 (en) 2007-12-11
KR20010043785A (ko) 2001-05-25
US20030033320A1 (en) 2003-02-13
US6487563B1 (en) 2002-11-26
GB9906629D0 (en) 1999-05-19
DE60032685T2 (de) 2007-11-15
EP1080411B1 (en) 2007-01-03

Similar Documents

Publication Publication Date Title
KR100732869B1 (ko) 메모리 재이용 방법
US6571260B1 (en) Memory reclamation method
US6314436B1 (en) Space-limited marking structure for tracing garbage collectors
US6839726B2 (en) Apparatus, method, and program for implementing garbage collection suitable for real-time processing
JP3560535B2 (ja) ガーベッジ収集中に空き領域を検出し合体させる方法およびシステム
US5915255A (en) Method and apparatus for referencing nodes using links
US6339779B1 (en) Reference counting mechanism for garbage collectors
US20020087589A1 (en) Methods and apparatus for optimizing garbage collection
US7043509B2 (en) Parallel non-contiguous allocation and card parsing
CA2321787C (en) Transparent garbage collection of resources
US7062519B2 (en) Incremental scanning of enormous objects to improve scheduling and pause-time behavior of garbage collection
WO2002054235A2 (en) Methods and apparatus for enabling local java object allocation and collection
US20020073103A1 (en) Memory garbage collection method and apparatus
US20020078002A1 (en) Memory garbage collection method and apparatus
US7062518B2 (en) Efficiently supporting the existence of long trains in a generation managed by the train algorithm
US6502110B1 (en) Memory reclamation method and apparatus
JP2004295889A (ja) データ処理システム内での処理タスクの実行を制御する方法および装置
US7096329B2 (en) Better placement of objects promoted into a generation managed by the train algorithm
US7024437B2 (en) Better placement of objects reachable from special objects during collection based on the train algorithm
Schatzl et al. Optimized memory management for class metadata in a JVM
KR20030094658A (ko) 자동화된 동적 메모리 관리 기반의 시스템 환경에서어플리케이션이 직접 동적 메모리를 관리하는 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee