KR20010043785A - 메모리 복구 방법 - Google Patents

메모리 복구 방법 Download PDF

Info

Publication number
KR20010043785A
KR20010043785A KR1020007013199A KR20007013199A KR20010043785A KR 20010043785 A KR20010043785 A KR 20010043785A KR 1020007013199 A KR1020007013199 A KR 1020007013199A KR 20007013199 A KR20007013199 A KR 20007013199A KR 20010043785 A KR20010043785 A KR 20010043785A
Authority
KR
South Korea
Prior art keywords
data object
identifier
data
memory space
pointer
Prior art date
Application number
KR1020007013199A
Other languages
English (en)
Other versions
KR100732869B1 (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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

포인터를 식별하여 링크된 데이터 오브젝트(910-960)를 구비하는 데이터 구조에 할당된 메모리 공간을 복구하는 방법을 제공하는데, 데이터 오브젝트에 할당된 메모리는 두 개의 시스템을 이용하여 복구되는데, 제 1 시스템(980)에 의해, 상기 데이터 구조의 선택된 일부는 포인터에 의해 트레버스되고, 적어도 두 개의 식별자중 하나는 데이터 오브젝트에 할당되고, 제 1 식별자는 데이터 오브젝트의 포인터에 의해 참조된 데이터 오브젝트가 식별되도록 데이터 오브젝트가 트레버스되는 것을 나타내고, 제 2 식별자는 데이터 오브젝트가 한 포인터에 의해 참조되는 것을 나타내지만, 데이터 오브젝트는 아직 트레버스되지 않으며, 제 2 시스템(990)에 의해, 개별 데이터 오브젝트는 관련된 메모리 공간이 복구되도록 할 수 있는 삭제를 위해 선택된다. 제 2 시스템(990)은 개별 데이터 오브젝트에 대한 제 1 시스템 식별자를 판독하고, 제 1 식별자가 존재하면, 데이터 오브젝트를 삭제하여 관련된 메모리 공간을 복구하고, 제 2 식별자가 존재하면, 제 3 식별자를 할당하는데, 제 1 시스템(980)은 제 3 식별자를 갖는 데이터 오브젝트에 할당된 메모리 공간을 복구하도록 동작한다.

Description

메모리 복구 방법{Memory reclamation method}
불요 정보 정리(garbage collection)는 프로그램에 의한 메모리 공간의 마지막 사용후에 시스템 메모리 공간의 자동적인 복구이다. 불요 정보 정리 기술에 대한 몇몇의 예는 R, Jones 등등에 의한 "Garbage Collection-Algorithms for Automatic Dynamic Memory Management", Pub. John Wiley and Song 1996, ISBN 0-471-94148-4의 1에서 18페이지, 및 1992년 9월 the 1992 International Workshop on Memory Management의 회보인, P.R.Wilson에 의한 " Uniprocessor Garbage Collection Technique", St.Malo, France,에 논의되어 있다. 프로그래머 및 컴파일러에 의해 메모리 할당 및 복구가 헨들링되며, 메모리 컴퓨터 프로그래머의 저장 요구는 간단하고 예측가능한데 반해, 특정한 데이터 구조의 라이프 타임이 더 이상 런-타임(run-time) 보다 앞서서 결정될 수 없도록, 기능 언어가 더욱 복잡한 실행 패턴을 가지는 경향을 보임에 따라, 프로그램이 동작할 때, 상기 저장의 자동화된 복구가 핵심점이다.
본 발명은 메모리 복구 방법에 관한 것으로, 특히 저장된 데이터 오브젝트에 대해 상충되는 삭제 시도가 행해지는 메모리 복구 방법에 관한 것이다.
도 1은 본 발명의 실시예에 알맞은 데이터 처리 시스템의 블록 다이어그램을 도시한 도면.
도 2 내지 도 4는 스키마를 만드는 트리컬러(tricolour)을 이용하여, 트레이싱(tracing) 처리로서 링크된 특정한 데이터 오브젝트의 그룹을 도시하는 도면.
도 5는 만들어진 불요 정보 정리 처리와 충돌되는 삭제 시도되었던 데이터 오브젝트를 포함하는 도 3의 링크된 특정한 데이터 오브젝트의 그룹을 도시하는 도면.
도 6 및 도 7은 본 발명에 의해 구현되는 메모리 공간 재생 방법에 의해 처리되는 데이터 오브젝트의 삭제를 도시하는 도면.
도 8은 본 발명에 의해 구현되는 메모리 공간의 복구 방법의 특징을 도시하는 플로우 챠트.
도 9는 본 발명에 의해 구현되는 프로그램, 제 1 불요 정보 정리 처리 및 제 2 불요 정보 정리처리에 의해 처리된 특정하게 링크된 데이터 오브젝트를 도시한 도면.
상술된 Wilson의 참조문헌에서 상술되었듯이, 몇몇의 불요 정보 정리 복구 기술에 대한 일반적인 특징은 분리되어 저장된 데이터 오브젝트에 의해 전해진, 참조 포인터에 의해 형성된 데이터 구조를 점진적으로 트레버스(traverse) 되는 것이다. 상기 기술은, 데이터 오브젝트를 링크하는 포인터들을 통해 한 경로 또는 경로들을 추적함으로서 외부 위치로부터 여전히 도달 가능하거나 다른 저장된 오브젝트에 의해 여전히 도달가능한 모든 저장된 오브젝트의 제 1 마킹(marking)을 포함한다.
그 다음에는 메모리를 스위핑(sweeping)하거나 압축(compacting)하는 것이 뒤따를수 있다. 즉, 오브젝트의 영역이 복구될 마킹되지 않은 오브젝트를 결정하기 위해 메모리 내의 저장된 모든 오브젝트를 검사하는 것이다.
일반적으로, 프로그램 처리로부터의 불요 정보가 가능한 한 빨리 검출되고, 적합한 자원(resources)이 복구되도록, 불요 정보 정리기 및 복구 처리는 프로그램 처리와 평행하게 컴퓨터 상에서 실행되고, 불요 정보 정리 및 복구 처리는 프로그램 처리의 데이터 오브젝트에 의해 점유된 히프(heap)(메모리 영역)상에서 동작한다. 서로에게 평행하게 실행되고, 동일한 메모리에서 동작한 두 개의 처리 실행의 결과는 동시에 동일 데이터 오브젝트에서 둘 다 동작 가능한 것이다. 두 처리에 오직 단일 처리 쓰레드만이 가능한 경우, 불요 정보 정리에서의 단계 및 복구 처리는 프로그램 처리의 단계와 인터리브(interleave)된다. 불요 정보 정리 및 복구 처리의 단일 단계는 데이터 오브젝트 및 참조되는 포인터를 갖는 데이터 오브젝트를 필연적으로 완전히 처리하지는 않는다.
많은 컴퓨터 프로그램밍 언어는 데이터 오브젝트를 이용한 메모리를 수동 복구하기 위한 기능을 제공한다. 자동 불요 정보 정리과는 반대로 데이터 오브젝트를 이용한 수동 메모리 복구로, 프로그래머는 데이터 오브젝트를 만들었던 프로그램안에서부터 적절한 기능을 명시적으로 실행 시켜야만 한다. 실제로, C++과 같은 객체지향 프로그램 언어의 선회되는 특징은 오브젝트 클레스에 대한 소멸자 방법(destructor method)의 정의 능력이다. 소멸자 방법은 구체적으로 오브젝트 클레스에 대한 프로그래머에 의해 쓰여진 기능이다. 소멸자 방법에 의해 형성된 디폴트 동작(default operation)은 히프로부터 결합된 오브젝트를 삭제한다. 프로그래머는 소멸자 방법안에서 다른 기능을 호출을 포함하므로, 소멸자 방법이 오브젝트 클레스로부터 생성된 데이터 오브젝트에 대해 실행??을 때, 데이터 오브젝트넌 파일 헨들(file handle) 및 오브젝트로부터의 포인터에 의해 참조된 다른 오브젝트처럼, 데이터 오브젝트에 의해 확보된 자원은 복구된다. 본 방법은 링크된 리스트 및 트리 데이터 구조의 복구에 있어서 선호되고, 여기서 링크된 리스트내의 각각의 오브젝트에 대한 소멸자는 리스트의 끝에 도달할 때까지 반복적으로 호출되고, 그것에 의해 단일 소멸자 방법으로부터 모든 링크된 리스트는 호출된다. 이러한 방법으로, 프로그램이 데이터 오브젝트로서 종료 됐다는 것을 아는 프로그래머는 프로그램으로부터 소멸자 방법을 실행시킬 수 있고, 그러므로 오브젝트 및 오브젝트의 자원은 오브젝트가 종료되자 마자, 규칙적인 유형으로 복구될 수 있다.
그러나 이러한 수동 메모리 복구 방법은 상술된 불요 정보 정리 및 복구 방법과 충돌된다. 만약 불요 정보 정리 및 복구 처리가 링크된 데이터 오브젝트의 시리즈의 처리를 통한 일부의 방법이라면, 프로그램 처리가 수동 데이터 오브젝트에 의해 확보된 자원을 복구할 때, 다음 번 불요 정보 정리 및 복구 처리가 제시작 돼고, 이것은 에러 상태가 발생되고, 잠재적으로 시스템의 실패의 결과로 더 이상 존재하지 않는 데이터 오브젝트의 처리를 시도한다.
자바(Sun Microsystems Inc.) 버추얼 머신에서, 수동 복구 방법에 대한 조항이 없다. 모든 메모리 복구는 자동 불요 정보 정리기에 의해 수행되어야 한다. 그러나, 자바(Sun Microsystems Inc.)는 다중 처리를 지원하고 다른 불요 정보 정리 메카니즘은 다른 강점과 약점(예를 들면, 마크-스윕 알고리즘은 대부분의 타입의 불요 정보를 식별할수 있지만, 식별하는 데 훨씬 더 많은 시간이 드는데 반해, 참조 카운팅은 불요 정보로서 0-참조 데이터 오브젝트를 빨리 식별할 수 있지만, 불요 정보로 사이클릭 데이터 구조를 식별할 수 없다)을 갖고, 데이터 오브젝트로 채워진 히프상에서 동시적인 몇몇의 자동적인 불요 정보 정리 동작 바람직하다. 불요 정보 정리기가 동시에 동작하기 위해서, 충돌 해결 메키니즘을 반드시 가져야하고, 결국 하나의 불요 정보 정리기가 데이터 오브젝트를 복구하는 동안 다른 불요 정보 정리기는 현재 처리 중이다.
본 발명의 해결점에 도달하기 전에, 몇몇의 다른 가능한 해결점이 조사된다. 현재 불요 정보 정리기에 의해 처리되는 데이터 오브젝트 및 복구 처리가 마크되어서, 수동 복구 수행 또는 데이터 오브젝트가 다른 불요 정보 정리 및 복구 처리들에 의하여 처리되기 전에 체크되고, 그 수행은 상기 데이터 오브젝트가 마크된 것으로 발견된다면, 상기 수행은 중단될 수 있다. 그러나, 상기 수행을 중단함으로써, 상기 데이터 오브젝트에 의하여 유지되는 자원들의 복구는 상기 불요 정보 정리와, 데이터 오브젝트를 불요 정보로서 인지하고, 미래에 그 데이터 오브젝트를 복구하는 복구 처리에 의존하게 된다. 이 복구는 미래의 확실하지 않은 시각에 수행될수 있으며, 상기 프로그램 처리가 영구히 실행되고 있으며 상기 데이터 오브젝트를 참조으로 하는 정확한 포인터를 유지한다면, 데이터 오브젝트는 불요 정보로써 결코 인지되지 않을 것이며, 따라서 결코 복구되지 않을 것이다.
대안적으로, 불요 정보 정리와 복구 처리는 실행하고 있는 상호 제외 락 (lock)(신호를 보내는 것과 같은 방법에 의하여)을 처리하고 있는 데이터 오브젝트(들)상에 위치시킬 수 있다. 그러나, 그러한 락들은 상기 프로그램 처리가 상기 데이터 오브젝트들을 액세스하고 조작하는 것을 방지하며, 상기 데이터 오브젝트(들)로의 액세스가 필요한 시점에서 상기 락(들)이 해제되거나 상기 프로그램 처리가 실패하게 될 때 까지 상기 프로그램 처리의 실행을 적어도 중지할 것이다.
본 발명에 따라서, 포인터들을 식별함으로써 링크된 데이터 오브젝트들을 포함하는 데이터 구조에 할당되는 메모리 공간을 복구하는 방법이 제공되며, 데이터 오브젝트들에 할당된 메모리는 두가지 시스템들을 사용하여 복구된다.
제 1 시스템에 의해 상기 데이터 구조의 선택된 부분이 상기 포인터들를 따라서 트레버스 되며, 최소한 2개의 식별자들중의 하나는 상기 데이터 오브젝트들에 할당되고, 제 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)에서 처음으로 시작되고, 파워-업에서 실행 시스템과 함께 로드된다. 또한, 버스(12)를 통해 연결된 CPU(10)는 키보드와 커서 제어를 알맞게 구비한 제 1 및 제 2 사용자 입력 디바이스(18, 20)이고, 마우스나 트랙볼과 같은 선택 디바이스이다. 시스템으로부터의 오디오 출력은 오디오 처리 스테이지(24)에 의해 구동되는 하나이상의 스피커(22)를 통하여 있다. 시스템으로부터의 비디오 출력은 CPU(10)의 제어 하에 있는 디스플레이 드라이버 스테이지에 의해 구동된 디스플레이 스크린(26)상에 표시된다. 시스템에 대한 다른 데이터의 소스는 예컨데, 인터넷처럼 원격 사이트로 링크된 온라인을 통해, 버스(12)와 연결된 네트워크 인터페이스(30)가 제공되는 시스템의 끝으로 연결된다.
도 2 내지 도 4는 스키마를 만드는 트리컬러를 이용한 증분 불요 정보 정리에서의 트레이싱의 기본 원리에 대하여 도시하였고, 그것의 전문 용어는 후술될 예에서 사용된다. 증분 수집기의 특정한 특성은, 매우 긴 중단이 실행에 삽입되는 것을 피하기 위해, 상기 절차가 연속적으로 수행되는 것이 아니라, 프로그램의 실행동안에 산재된 불연속 단계(discrete step)에서 수행된다는 점이다. 트리컬러 스키마는, 포인터에 의해 링크된 메모리 오브젝트에의해 형성된 "네트워크"를 통해 확산되는 것을 마킹(marking)하는 절차를 설명하기에 편리한 방법이다. 스키마에서, 트레버스 절차에 의해 도달되고 지나간 오브젝트(즉, 트레버스는 모든 링크된 직접 파생(immediate descendents)에 도달한다)는 흑색이다. 실제의 또는 잠재적 파생이 도달하지 못한 트레버스에 의해 도달한 오브젝트는 회색이고, 모든 다른 오브젝트는 백색이다.
도 2 내지 도 4의 특정하게-링크된 수집에서, 도 2는 흑색으로 마크된 으브젝트(35) 및 회색으로 마크된 포인터를 옮기는 3개의 오브젝트(36, 38, 39)를 갖는, 오브젝트(35)에서 시작된 트레이싱 절차 및 바깥쪽/아래쪽으로 확산하는 제 1 증분 스테이지후의 상태를 도시한다. 도 3은 트레버스에 의해 도달되고 따라서 회색으로 마크된, 오브젝트(36, 38, 39)의 파생 오브젝트(40, 41, 42, 44, 45)를 갖는, 다른 증분 스테이지의 상태를 도시한다. 그것들의 모든 파생이 도달한 후에, 오브젝트(36, 38, 39)는 이 스테이지에서 검게 마크된다. 도 4는 링크될 오브젝트가 남아있지 않은 것으로 결정되고 오브젝트(40, 41, 42, 44, 45)는 흑색으로 마크된 최종 스테이지를 나타낸다. 이것은 마크 위상(mark phase)을 포함하고, 포인터가 없는 두 개의 "도달 불가능한" 오브젝트(37, 43)를 도시한다. 이러한 오브젝트는 아직도 백색으로 마크되며, 불요 정보인 것을 나타내고 그러므로 삭제가 가능하다.
트리컬러(tricolour) 제조 스키마는, 절차의 증분 성질을 다루는 다양한 기술을 포함하는, 종래에 인용된 Wilson의 참고 문헌에서 더 자세히 논의되고, 위치된 포인터의 배열을 쉬프팅하는 프로그램 실행의 점재된 세스먼트(interspersed segment)를 갖는 데이터 스트럭쳐의 레이아웃은 트레버스동안에 바뀐다. 주의할 점은, 도 2 내지 도4에서의 오브젝트의 계층적 레이아웃이 순전히 도시를 위한 것이라는 점이다. 실질적으로, 오브젝트는 링크 포인터의 배열에 의해 오직 계층(hierarchy)만이 결정되는 가능한 메모리를 통해 확산될 것이다.
모순되는 삭제 시도의 문제는, 도 3의 특정 링크 데이터 오브젝트의 그룹을 도시하는 도 5를 참조로 하여 설명될 것이다. 증분 불요 정보 정리기는 데이터 오브젝트(35, 36, 38 및 39)를 수행했고, 불요 정보 정리기가 다시 시작될 때 실행될 예정인 데이터 오브젝트(40, 41, 42, 44 및 45)를 참조한다. 그러나, 데이터 오브젝트(38)를 처리하는 불요 정보 정리기와 데이터 오브젝트(42)사이에서, 불요 정보 정리기로 외부 처리는 데이터 오브젝트(38)를 위한 소멸자 가동을 실행하고, 차례대로 데이터 오브젝트에 대한 소멸자 가동을 실행시킨다. 불요 정보 정리기가 이어서 재실행되고, 데이터 오브젝트로 예견되는 참조를 따라갔을 때, 에러 상태가 발생할 경우, 어떤 데이터 오브젝트도 발견될수 없고, 대안적으로, 불요 정보 정리기가 새로운 데이터 오브젝트는 데이터 오브젝트(38)에 링크되고, 차례대로 데이터 오브젝트(35)에 링크된다고 부정확하게 믿을 경우, 불요 정보 정리기로 외부 처리는 데이터 오브젝트(42)에 의해 종래에 점유되었던 메모리 영역에서 다른 데이터 오브젝트를 생성했을 것이다.
본 발명이 구현하는 메모리 공간 복구는 도 6을 참조로 하여 설명된다. 프로그램은 파생 데이터 오브젝트(52)에 링크된 히프(heap) 데이터 오브젝트(50)에서 생성되는데, 상기 파생 데이터 오브젝트(52)는 데이터 오브젝트(56)로 링크된 파생 데이터 오브젝트(54)에 차례대로 링크된다. 프로그램은 데이터를 저장하기 위해 데이터 오브젝트(50 내지56)을 이용하고 그후에 실행동안 오브젝트와 저장된 데이터를 조작한다. 이 예에서, 불요 정보 정리기는 데이터 오브젝트(50 및 52)를 처리했고, 다음 재시작 했을 때, 데이터 오브젝트(54)를 실행하게 되어있다. 실행주기 동안, 프로그램은 데이터 오브젝트(52)와 그것의 파생은 더 이상 필요하지 안다는 것을 결정하고, 각각의 파생에 대하여 소멸자를 반복적으로 호출하기 위해 쓰여진 데이터 오브젝트(52)에 대한 소멸자 방법을 실행한다. 상술된 범위는 당분야에서 용이하다.
본 발명은, 자동 불요 정보 정리와 호환되게 하기 위해 소멸자 방법과 같은, 알려진 수동 메모리 복구 동작을 효과적으로 변경한다. 변경된 소멸자 방법은 오브젝트의 데이터 필드로부터 데이터 오브젝트(52) 마킹 상태를 결정한다. 상태가 흑색이 되는 것이 발견됐을 때, 소멸자는, 각각의 파생 데이터 오브젝트, 이 경우 데이터 오브젝트(54)에 대한 소멸자를 호출한다. 데이터 오브젝트(54)에 대한 소멸자는 그러므로, 데이터 오브젝트(54)를 삭제하는 대신, 오브젝트의 삭제의 요구를 나타내는 적색으로 데이터 오브젝트(54)의 마킹상태를 변경시킨다. 데이터 오브젝트(54)에 대한 소멸자는 데이터 오브젝트(56)를 삭제하고, 데이터 오브젝트(56)의 마킹 상태를 백색으로 결정하는, 데이터 오브젝트(56)에 대한 소멸자를 반복적으로 호출하고, 데이터 오브젝트(54)에 대한 소멸자로 돌아간다. 이 파과기는 히프로부터 데이터 오브젝트(52) 삭제에 의해 종료되는 데이터 오브젝트(52)에 대한 소멸자로 돌아가는 실행을 차례대로 종료한다. 만일 모든 데이터 오브젝트가 흑색 또는 백색의 마킹 상태를 가졌다면, 충돌은 일어나지 않고, 데이터 오브젝트는 반복적으로 삭제된다. 대신, 데이터 오브젝트(54)는 적색 마킹 상태로 남아있다.
불요 정보 정리기는 도 7에서 도시된 데이터 오브젝트의 마킹을 재시작한다. 참조된 데이터 오브젝트를 처리할 때, 각각의 마킹 상태는 체크된다. 데이터 오브젝트(54)를 처리할 때, 불요 정보 정리기는 이것의 상태가 적색임을 발견한다. 파생 데이터 오브젝트가 처리될 때, 회색으로 마킹된 데이터 오브젝트의 상태가 흑색으로 변경되는 것과 동일한 방식으로, 적색으로 마크된 데이터 오브젝트는 백색으로 변경된다. 이것은 자동 테스트- 셋 동작으로서 수행된다(만약 (상태=적색)이면 상태=백색). 데이터 오브젝트는 그러므로 불요 정보 정리의 페이즈의 복구동안 다른 불요 정보와 함께 복구된다.
본 발명의 양호한 실시예에서, 마킹 페이즈 동안 불요 정보 정리기에 의해 처리된 적색 상태의 오브젝트는 복구 페이즈에 대한 기다림 없이 불요 정보 정리기에 의해 즉시 삭제된다.
본 발명의 특징을 구현하는, 소멸자의 동작 또는 다른 수동 기능은 복구를 위해 쓰여진 데이터 오브젝트의 상태에 달려있다. 예컨데, 만약 데이터 오브젝트가 두 개의 현존하는 데이터 오브젝트의 파생이라면(데이터 오브젝트가 주기적인 상태에서 링크된것과 같이), 삭제된 또는 삭제되도록 요구된 단 하나는, 현존하는 데이터 오브젝트에 대한 수동 복구 기능이 파생 데이터 오브젝트의 수동 복구를 위해 반복적으로 호출하는 코드 없이 쓰여진 경우, 데이터 오브젝트는 삭제되지 않는 것이 요구된다. 실제로, 오직 가장 높은 데이터 오브젝트가 삭제되거나 또는 삭제에 대한 요구를 나타내는 적색으로 마크되고, 자동 불요 정보 정리기는 메모리 힙을 통한 다음 마킹 페이즈 상의 불요 정보로서 고아 파생(orphan descents)을 인식한다.
본 발명의 특징을 구현하는 수동 복구의 다른 예는, 데이터 오브젝트가 불요 정보 정리와 충돌되는 삭제 요구를 나타내는 적색으로 마크됐을 때, 적색 마크는 트리의 아래로 전파되거나 또는 적색 마크된 데아타 오브젝트의 다른 파생으로 리스트된다.
도 8은 본 발명의 특징을 설명하는 플로우 차트이다. 단계(800)에서, 그중 몇은 더 이상 사용되지 않는, 히프의 데이터 스트럭쳐의 형태에서 몇몇의 데이터 오브젝트를 형성한 프로그램은, 현재 사용되고 있는 데이터 구조에 대한 각각의 톱 레벨 (루트) 데이터 오브젝트로 참조를 획득하기 위해서 질의된다. 이런 참조는 풀(pool)에 저장된다. 후술될 설명에서 이해되듯이, 풀은 불요 정보 정리기에 의해 처리된 데이터 오브젝트를 저장하기 위해서 사용되고, 불요 정보 정리기가 데이터 구조를 트레버스 되듯이, 참조는 풀로 부가되고, 제거된다. 본 발명의 방법에 다른 처리동안, 파생 데이터 오브젝트의 참조는 풀로 부가되고, 각각의 데이터 오브젝트가 완벽히 처리되듯이, 각각의 참조는 풀로부터 제거된다. 히프의 모든 데이터 오브젝트의 마킹 상태는 단계(810)에서 백색으로 만들어진다. 풀에서 참조된 각각의 데이터 오브젝트에 대해, 만약 마킹 상태가 백색으로 밝혀지면, 단계(820)에서 회색으로 변경되고, 만약 어떤, 각각의 파생 데이터 오브젝트의 참조는 단계(830)에서 풀로 부가된다. 데이터 오브젝트의 참조는 풀에서 유지되고, 그 뒤에 다시 수행된다. 만약 데이터 오브젝트의 마킹 상태가 회색으로 밝혀지면, 단계(840)에서 흑색으로 변경되고, 데이터 오브젝트로의 참조는 단계(850)에서 풀로부터 제거된다. 만약 데이터 오브젝트의 마킹 상태가 적색으로 밝혀지면, 단계(860)에서 백색으로 변경되고, 데이터 오브젝트로의 참조는 단계(870)에서 풀로부터 제거된다. 도 6 및 도7을 참조로하여 위에서 논의된바와 같이, 오브젝트는 회색 마킹 상태와 중돌하는 수동 삭제 동작에 의해 적색 마킹 상태가 할당된다. 회색에서 적색으로 마킹 상태의 변경은 수동 삭제 동작동안에 수행된다.
이러한 방식에서, 일단 풀안의 데이터 오브젝트로의 모든 참조가 소진되고, 만일 그것들이 프로그램에 의해 확보된 루트 데이터에 링크됐고 삭제 되도록 요구되지 않았다면, 히프에서의 모든 데이터 오브젝트는 흑색의 마킹 상태를 갖고, 그렇지 않으면 백색이 된다. 불요 정보 정리의 연이은 복구 페이져는 스위핑(sweeping), 압축(compaction)등과 같은 방법에 의한 백색 마킹 상태를 갖는 데이터 오브젝트에 의해 확보된 메모리를 복구한다.
본 발명의 삭제 요구 메카니즘을 프로그램 언어 및 사용되는 컴파일러에 따라 많은 방법으로 수행됨이 당업자들에게 명백해질 것이다.
소멸자 방법의 이용을 허용하는 이러한 객체지향 언어에 대해, 일단 소멸자 방법이 호출되면, 데이터 오브젝트의 삭제는 자동적이다. 이 경우 본 발명을 수행함에 있어서, 만약 오브젝트의 적색 마킹이 발견되면, 컴파일러는 변조되고, 소멸자 방법은 중단된다. 대안적으로, 만약 데이터 오브젝트의 적색 마킹이 발견되면, 파이날리저(finaliser)가 데이터 오브젝트를 재생할 수 있는 경우, 소멸자로 파이날리저 방법을 포함하는 것을 허용한다.
보다 덜 정교한 언어에서, 삭제 및 데이터 오브젝트에서 이용된 할당 해제(de-allocation) 기능을 허용하기 위해서, 프로그래머는 삭제 또는 할당 해제 전에 데이터 오브젝트의 마킹 상태를 체크하는 적절한 기증을 쓸 수 있다.
리스트 또는 트리의 반복적 삭제와 같은, 삭제 기능 또는 소멸자 방법에 의해 수행된 다른 동작은 각각의 기능으로부터 적절한 동작을 호출하는 프로그래머에 달려있다.
도 9는 본 발명을 구현하는 프로그램, 제 1 불요 정보 선택 처리 및 제 2 불요 정보 선택 처리에 의해 수행된 부분적으로 링크된 데이터 오브젝트의 그룹을 도시한다. 자바(Sun Microsoft Inc) 버티칼 머신은 제 1 쓰레드(thread)에서 실행되는 프로그램 처리(900)를 갖는다. 프로그램 처리(900)는 힙(905)에서 생성된 몇몇의 데이터 오브젝트(910-960)를 갖는다. 데이터 오브젝트의 일부는 포인터에 의해 트리(915-935) 형태 및 리스트(950-960) 데이터 구조로 함께 링크된다. 상기 프로그램 처리는 루트 데이터 오브젝트(910, 915 및 970)를 통해 데이터 오브젝트를 엑세스한다. 이 데이터 오브젝트는, 오브젝트(940 및 950-960)가 더 이상 프로그램 처리로 엑세스 가능하지 않은 것과 같이, 루트 데이터 오브젝트로부터 도달 가능하지 않으며, 그러므로 불요 정보이다. 제 2 쓰레드에 실행되는 제 1 불요 정보 정리 처리(980)는 히프에서 동작된다. 불요 정보 정리 프로세서는 참조가 아닌 데이터 오브젝트를 검출하고 삭제하는 참조-카운트 알고리즘(reference-count algorithm)을 이용한다. 제 3 쓰레드에서 실행되는 제 2 불요 정보 정리 처리(990)은 또한 히프에서 동작한다. 불요 정보 정리 처리(990)는 불요 정보를 검출하고 복구하기 위해, 도 8을 참조하여 상술된 마크-스윕 알고리즘(mark-sweep algorithm)을 이용한다. 히프에서의 처리에서, 제 1 불요 정보 정리 처리(980)은 검출하고 레퍼런스가 아닌 데이터 오브젝트(940)의 삭제를 시도한다. 그러나, 제 2 불요 정보 정리 처리(990)은 이 오브젝트의 현재 처리이다(그러므로 회색으로 마크되있다). 제 1 불요 정보 정리 처리는 데이터 오브젝트의 회색 마킹을 검출하고, 삭제하는 대신에 마킹 상태를 적색으로 변경한다. 상술된 바와 같이 재시작 됐을 때, 제 1 불요 정보 정리 처리(980)가 적색으로 마크된 데이터 오브젝트를 삭제하는 동안, 도 8을 참조로 상술되었듯, 제 2 불요 정보 정리기 처리(990)는 지속된다.
비록 소프트웨어의 실행에 관하여 대체적으로 정의됐지만, 상술된 기증의 특징은 하드웨어 또는 하드웨어와 소프트웨어와의 조합에서도 동일하게 수행가증함이 당업자에 의해 이해될 것이다.
본 명세서를 읽음으로서, 다른 변경은 당업자에게 명백해진다. 이러한 변경은 디자인, 제조, 및 데이터 처리의 이용 및 저장 장치 및 디바이스 및 그것의 구성부에서 이미 잘 알려진 다른 특징 및 이미 본 명세서에서 상술된 특징을 대신하거나 또는 부가되어 이용되는 특징을 수반한다.

Claims (10)

  1. 식별 포인터에 의해 링크된 데이터 오브젝트를 구비하는 데이터 구조에 할당된 메모리 공간을 복구시키는 방법에 있어서,
    제 1 및 제 2 시스템을 이용하여 데이터 오브젝트에 할당된 메모리가 복구되는데,
    제 1 시스템에 의해, 포인터들을 뒤따라서 상기 데이터 구조의 선택된 일부가 트레버스되며, 적어도 두 개의 식별자중 하나가 데이터 오브젝트에 할당되고, 제 1 식별자는 데이터 오브젝트가 트레버스되어 데이터 오브젝트의 포인터에 의해 참조된 데이터 오브젝트가 식별되었음을 나타내고, 제 2 식별자는 데이터 오브젝트가 한 포인터에 의해 참조되었지만, 데이터 오브젝트는 아직 트레버스되지 않았음을 나타내고,
    제 2 시스템에 의해, 개별 데이터 오브젝트가 삭제를 위해 선택되어, 관련된 메모리 공간을 복구되도록 하며,
    상기 제 2 시스템은 개별 데이터 오브젝트에 대해 제 1 시스템 식별자를 판독하고, 상기 제 1 식별자가 존재하면, 데이터 오브젝트를 삭제함으로서, 상기 관련된 메모리 공간을 복구하고, 제 2 식별자가 존재한다면, 제 3 식별자를 할당하고, 상기 제 1 시스템은 제 3 식별자를 갖는 데이터 오브젝트에 할당되는 상기 메모리 공간을 복구하도록 동작하는 메모리 공간 복구 방법.
  2. 제 1 항에 있어서,
    상기 제 1 시스템은 자동 불요 정보 정리 시스템(automatic garbage collection system)을 포함하는 메모리 공간 복구 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 제 1 시스템은 식별자를 갖지 않는 데이터 오브젝트에 할당된 메모리 공간을 복구하도록 또한 동작하는 메모리 공간 복구 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 2 시스템은 데이터 오브젝트의 수동 삭제인 메모리 공간 복구 방법.
  5. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 2 시스템은, 상기 오브젝트가 더 이상 필요치 않을 때 상기 오브젝트의 작성 프로그램에 의한 데이터 오브젝트의 삭제인 메모리 공간 복구 방법.
  6. 제 2 항 또는 제 3 항에 있어서,
    상기 제 2 시스템은 다른 자동 불요 정보 정리 시스템인 메모리 공간 복구 방법.
  7. 제 1 항 내지 제 6 항 중 어느 한 항에 있어서,
    상기 제 1 시스템은 상기 제 3 식별자를 갖는 데이터 오브젝트로 부터의 포인터에 의해 참조된 데이터 오브젝트에 할당된 메모리 공간을 또한 복구하는 메모리 공간 복구 방법.
  8. 포인터를 식별하여 링크된 데이터 오브젝트를 구비하는 데이터 구조를 포함하는 랜덤 액세스 메모리와 결합된 데이터 처리기를 포함하는 데이터 처리 장치에 있어서,
    상기 처리기는, 저장된 다수의 데이터 오브젝트에 대해 동작하도록 되어 있고,
    포인터에 의해 상기 데이터 구조의 선택된 일부를 트레버스하고, 트레버스된 데이터 오브젝트에 적어도 두 개의 식별자중 하나를 할당하는 제 1 수단을 포함하고, 제 1 식별자는 데이터 오브젝트가 트레버스되어, 데이터 오브젝트의 포인터에 의해 참조된 데이터 오브젝트가 식별되었음을 나타내고, 제 2 식별자는 데이터 오브젝트가 포인터에 의해 참조되지만, 데이터 오브젝트가 아직 트레버스되지 않음을 나타내며, 관련된 메모리 공간이 복구되도록 할 수 있는 삭제를 위해 개별 데이터 오브젝트를 선택하는 제 2 수단을 포함하며,
    상기 제 2 수단은 개별 데이터 오브젝트에 대한 제 1 시스템 식별자를 판독하고, 상기 제 1 식별자가 존재하면, 데이터 오브젝트를 삭제하여 관련된 메모리 공간을 복구하고, 제 2 식별자가 존재하면, 제 3 식별자를 할당하며, 상기 제 1 수단은 제 3 식별자를 갖는 데이터 오브젝트에 할당된 메모리 공간을 복구하도록 동작하는 데이터 처리 장치.
  9. 제 8 항에 있어서,
    상기 제 1 수단은 상기 제 3 식별자를 갖는 데이터 오브젝트를 삭제하는 데이터 처리 장치.
  10. 머신에 의해 판독 가능하고, 제 1 항 내지 제 7 항 중 어느 한 항의 방법 단계들을 실행하기 위한 명령의 하나 이상의 프로그램을 엔코딩하는 프로그램 저장 장치.
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 true KR20010043785A (ko) 2001-05-25
KR100732869B1 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987315B2 (en) 2006-02-03 2011-07-26 Samsung Electronics Co., Ltd. Data storage apparatus with block reclaim for nonvolatile buffer
US20220237369A1 (en) * 2020-09-25 2022-07-28 UiPath, Inc. Artifacts reference creation and dependency tracking

Families Citing this family (40)

* 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
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 抖音视界有限公司 对象的处理方法、装置、电子设备及计算机可读存储介质
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7987315B2 (en) 2006-02-03 2011-07-26 Samsung Electronics Co., Ltd. Data storage apparatus with block reclaim for nonvolatile buffer
US20220237369A1 (en) * 2020-09-25 2022-07-28 UiPath, Inc. Artifacts reference creation and dependency tracking
US11809815B2 (en) * 2020-09-25 2023-11-07 UiPath, Inc. Artifacts reference creation and dependency tracking

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
KR100732869B1 (ko) 2007-06-28
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
KR20010043785A (ko) 메모리 복구 방법
US6571260B1 (en) Memory reclamation method
KR100541174B1 (ko) 로컬화된 메모리 재이용을 가진 데이터 처리기
US7111294B2 (en) Thread-specific heaps
US5930807A (en) Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US6314436B1 (en) Space-limited marking structure for tracing garbage collectors
US6658653B1 (en) Debugging methods for heap misuse
US6339779B1 (en) Reference counting mechanism for garbage collectors
JP2002506550A (ja) 部分的に再配置されたオブジェクトのソース及び目標インスタンスに関する書込みバリアを含む有界休止時間ガーベッジコレクションシステム及び方法
CA2321787C (en) Transparent garbage collection of resources
US20020073103A1 (en) Memory garbage collection method and apparatus
US20020078002A1 (en) Memory garbage collection method and apparatus
US8176286B2 (en) Memory recycling in computer systems
US6502110B1 (en) Memory reclamation method and apparatus
US20080250088A1 (en) Concurrent evacuation of the young generation
US7519640B1 (en) Better placement of dying objects in a generation managed by the train algorithm
US10031840B2 (en) Method of ascertaining primary cause of memory consumption in program, and computer system and computer program for the same
JP5199975B2 (ja) メモリ管理方法、メモリ管理プログラム、及び、情報処理装置
Chatterjee et al. Resource management in native languages using dynamic binary instrumentation (pin)
Kazempour Garbage Collection in Object-Oriented Languages Dennis P. Smithers
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