KR100772871B1 - 자바 환경에서 자원을 관리하는 장치 및 방법 - Google Patents

자바 환경에서 자원을 관리하는 장치 및 방법 Download PDF

Info

Publication number
KR100772871B1
KR100772871B1 KR1020060018281A KR20060018281A KR100772871B1 KR 100772871 B1 KR100772871 B1 KR 100772871B1 KR 1020060018281 A KR1020060018281 A KR 1020060018281A KR 20060018281 A KR20060018281 A KR 20060018281A KR 100772871 B1 KR100772871 B1 KR 100772871B1
Authority
KR
South Korea
Prior art keywords
accessible
reference object
resource
memory
order
Prior art date
Application number
KR1020060018281A
Other languages
English (en)
Other versions
KR20070088098A (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 삼성전자주식회사
Priority to KR1020060018281A priority Critical patent/KR100772871B1/ko
Priority to US11/655,923 priority patent/US7664800B2/en
Priority to EP07102836A priority patent/EP1835407A3/en
Priority to JP2007042023A priority patent/JP2007226808A/ja
Publication of KR20070088098A publication Critical patent/KR20070088098A/ko
Application granted granted Critical
Publication of KR100772871B1 publication Critical patent/KR100772871B1/ko

Links

Images

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
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B43WRITING OR DRAWING IMPLEMENTS; BUREAU ACCESSORIES
    • B43KIMPLEMENTS FOR WRITING OR DRAWING
    • B43K29/00Combinations of writing implements with other articles
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B43WRITING OR DRAWING IMPLEMENTS; BUREAU ACCESSORIES
    • B43KIMPLEMENTS FOR WRITING OR DRAWING
    • B43K25/00Attaching writing implements to wearing apparel or objects involving constructional changes of the implements
    • B43K25/02Clips
    • B43K25/022Clips attached to a pen cap
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/033Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
    • G06F3/0354Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor with detection of 2D relative movements between the device, or an operating part thereof, and a plane or surface, e.g. 2D mice, trackballs, pens or pucks
    • G06F3/03545Pens or stylus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

본 발명은 자바 환경에서 자원을 관리하는 장치 및 방법에 관한 것으로서, 현재 실행 중인 프로그램으로부터의 접근 가능성(reachability)에 따라 분류된 복수 개의 참조 객체(Reference Object)와 파이널라이저블 객체(Finalizable Object)의 종료(finalize) 상태를 확인함에 있어서, 참조 객체를 통하여 접근 가능한 객체에 할당된 자원이 원활하게 운용될 수 있도록 각 객체의 종료 여부 확인 순서를 변경하는 자바 환경에서 자원을 관리하는 장치 및 방법에 관한 것이다.
본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 장치는 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지를 확인하는 접근 가능성 확인부와, 상기 확인 결과에 따라 상기 객체로의 접근 경로를 확인하는 접근 경로 확인부와, 상기 접근 경로의 순서를 결정하는 제어부 및 상기 순서에 따른 객체에 할당된 상기 메모리 자원의 해제를 수행하는 자원 해제부를 포함한다.
가비지 컬렉터, 참조 객체(Reference Object), 파이널라이저블 객체(Finalizable Object)

Description

자바 환경에서 자원을 관리하는 장치 및 방법{Apparatus and method for managing resource on Java environment}
도 1은 종래의 자바 가상 머신을 나타낸 도면이다.
도 2는 종래의 객체가 종료됨에 따른 상태를 나타낸 도면이다.
도 3은 본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 장치를 나타낸 블록도이다.
도 4는 본 발명의 실시예에 따른 큐를 나타낸 도면이다.
도 5a 내지 도 5d는 본 발명의 실시예에 따른 순서에 따라 자원이 해제되는 것을 나타낸 개념도이다.
도 6은 본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 과정을 나타낸 흐름도이다.
<도면의 주요 부분에 관한 부호의 설명>
310 : 제 1 메모리 320 : 제 2 메모리
330 : 접근 가능 확인부 340 : 자원 정보 갱신부
350 : 제어부 360 : 접근 경로 확인부
370 : 자원 해제부
본 발명은 자바 환경에서 자원을 관리하는 장치 및 방법에 관한 것으로서, 더욱 상세하게는 현재 실행 중인 프로그램으로부터의 접근 가능성(reachability)에 따라 분류된 복수 개의 참조 객체(Reference Object)와 파이널라이저블 객체(Finalizable Object)의 종료(finalize) 상태를 확인함에 있어서, 참조 객체를 통하여 접근 가능한 객체에 할당된 자원이 원활하게 운용될 수 있도록 각 객체의 종료 여부 확인 순서를 변경하는 자바 환경에서 자원을 관리하는 장치 및 방법에 관한 것이다.
자바(Java)는 작성된 코드를 플랫폼 독립적으로 수행하는 객체 지향 프로그래밍 언어이다. 여기서, 플랫폼은 프로그램이 실행되는 하드웨어 또는 운영체계와 같은 소프트웨어 환경을 말한다. 자바로 작성된 코드는 자바 컴파일러(Java Compiler)에 의해 자바 바이트 코드(Java Byte Code)로 컴파일되고, 자바 바이트 코드는 다양한 하드웨어 기반 플랫폼에 포팅된 자바 가상 머신(Java Virtual Machine)에 의해 실행된다.
도 1은 종래의 자바 가상 머신을 나타낸 도면으로서, 자바 가상 머신(10)은 인터프리터(Interpreter)(11), 가비지 컬렉터(Garbage Collector)(12), 클래스 로더(Class Loader)(13) 및 런타임 시스템(Run-time System)(14)을 포함하여 구성된다.
클래스에 대한 인스턴스(Instance)를 객체(Object)라고 하는데, 하나의 객체 가 생성되면 메모리의 힙(heap) 영역 중 일부가 생성된 객체를 위하여 할당된다. 그리고, 객체가 소멸하면 가비지 컬렉터(12)는 해당 메모리 영역의 자원 할당을 해제함으로써 다른 프로그램 또는 객체가 자유롭게 이용할 수 있도록 한다.
자원 할당을 해제함에 있어서, 가비지 컬렉터(12)는 힙 영역의 메모리 자원을 할당 받은 모든 객체의 종료 여부를 확인한 후에, 종료된 모든 객체로 할당된 자원을 해제한다. 여기서, 가비지 컬렉터(12)는 해당 객체의 종료 여부를 확인하기 위하여 현재 실행 중인 프로그램으로부터의 접근 가능 여부를 확인한다. 즉, 가비지 컬렉터(12)는 스레드의 루트 셋(Root Set)을 통하여 접근 가능한(reachable) 객체들은 종료되지 않았다고 판단하고, 루트 셋을 통하여 접근 불가능한(unreachable) 객체들은 종료되었다고 판단하는 것이다.
한편, 참조 클래스(Reference Class)를 상속받은 클래스의 인스턴스(이하, 참조 객체라 한다)를 통하여 루트 셋으로부터 접근 가능한 객체가 있는데, 이러한 객체는 루트 셋으로부터 접근 불가능한 객체로 분류되어 해당 메모리 영역에 대한 자원 할당이 가비지 컬렉터(12)에 의하여 해제된다.
여기서, 참조 객체는 소프트 참조 객체(Soft Reference Object), 위크 참조 객체(Weak Reference Object) 및 팬텀 참조 객체(Phantom Reference Object)로 분류되는데, 객체로의 접근 종류는 루트 셋으로부터의 접근 방식에 따라 4가지로 분류될 수 있다. 즉, 참조 객체를 제외한 나머지 객체로부터의 접근, 소프트 참조 객체로부터의 접근, 위크 참조 객체로부터의 접근 및 팬텀 참조 객체로부터의 접근이 그것이다.
도 2는 종래의 객체가 종료됨에 따른 상태를 나타낸 도면으로서, 상태는 종료 가능(Finalizable) 상태(21), 종료 중(Finalizing) 상태(22), 종료 완료(Finalized) 상태(23) 및 반환 완료(Reclaimed) 상태(24)를 포함하는데, 이러한 상태 변화가 가능한 객체를 파이널라이저블 객체(Finalizable Object)라 한다.
종료 가능 상태(21)는 객체가 생성되어 실행 중인 상태를 의미하고, 종료 중 상태(22)는 finalize 함수가 수행됨에 따라 객체의 종료가 진행 중인 상태를 의미하고, 종료 완료 상태(23)는 finalize 함수의 수행이 종료됨에 따라 가비지 컬렉터(12)에 의하여 해당 객체에 할당된 자원이 해제될 수 있는 상태를 의미하고 그리고, 반환 완료 상태(24)는 해당 객체에 할당된 자원이 메모리 영역에서 해제된 상태를 의미한다.
가비지 컬렉터(12)는 힙 영역의 메모리 자원을 할당 받은 객체의 종료 여부를 확인하기 위하여 객체의 활성 여부(liveness)를 나타내는 비트(bit)(이하, 활성 비트라 한다)를 모두 false로 설정한 후, 루트 셋으로부터 접근 가능한 모든 객체에 대한 확인을 시작한다. 그리고, 확인 대상인 객체가 루트 셋으로부터 접근 가능하면, 가비지 컬렉터(12)는 그 객체의 활성 비트를 true로 설정하여 자원 해제의 대상에서 제거한다.
자바 가상 머신의 구현 여부에 따라 각 참조 객체를 위한 큐(queue)가 존재할 수 있는데, 가비지 컬렉터(12)는 확인 대상인 객체가 참조 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 참조 객체의 종류에 대응하는 큐에 입력한다. 이 때, 참조 객체를 통하여 접근 가능한 객체는 강하게 접근 가능한(strongly reachable) 객체가 아니기 때문에 그 활성 비트는 false로 유지된다.
객체의 종료 여부 확인이 완료되면 가비지 컬렉터(12)는 강하게 접근 가능 하지 않은 객체의 주소를 파이널라이저블 객체의 큐(Finalizable Queue)에 입력한다.
그리고, 가비지 컬렉터(12)는 소프트 참조 객체의 큐, 위크 참조 객체의 큐, 파이널라이저블 객체의 큐 및 팬텀 참조 객체의 큐 순서로 수집된 주소에 해당하는 객체에 대한 자원 해제 작업을 수행한다. 즉, 가비지 컬렉터(12)는 소프트 참조 객체의 큐, 위크 참조 객체의 큐 및 팬텀 참조 객체의 큐에 입력된 주소를 추출한 후에 각 주소에 해당하는 객체를 NULL로 설정하고, 파이널라이저블 객체의 큐에 입력된 주소에 해당하는 객체와 그 객체로부터 접근 가능한 모든 객체의 활성 비트를 true로 설정한다. 이는 finalize 함수에 의하여 종료되는 객체 즉, 파이널라이저블 객체 및 파이널라이저블 객체에 의하여 접근 가능한 객체가 활성 상태여야 하기 때문이다.
한편, 어떤 객체가 강하게 접근 가능한 객체임과 동시에 참조 객체를 통하여 접근 가능한 객체(이하, 공동 객체라 한다)인 경우 가비지 컬렉터(12)는 소프트 참조 객체의 큐 및 위크 참조 객체의 큐에서 추출된 주소에 해당하는 공동 객체를 NULL로 설정하고, 파이널라이저블 객체의 큐에서 추출된 주소의 공동 객체의 활성 비트를 true로 설정한다. 즉, 동일한 하나의 객체(공동 객체)가 NULL로 설정된 이후에 다시 그 활성 비트가 true로 설정되어 그 객체를 위하여 할당된 메모리 자원이 여전히 힙 영역에 존재하는 것으로서, 이는 객체의 상태가 종료 완료 상태(23) 일 때까지 유지된다. 이에 따라, 참조 객체를 통하여 접근할 수 없는 메모리 자원이 힙 영역에 존재하게 되고 이에 따른 자원의 낭비가 발생하게 된다.
미국 등록 특허 6070173호는 실제 객체 힙과 실제 객체 힙보다 큰 가상 객체 힙을 형성하여 자바 어플리케이션의 객체는 가상 객체 힙에 할당하고 가비지 컬렉션(Garbage Collection)을 가상 객체 힙에서 실행하는 방법이 개시되어 있다.
그러나, 이는 단지 힙 영역을 가상으로 확장하여 운용한 것으로서, 참조 객체를 통하여 접근할 수 없는 메모리 자원이 발생하지 않도록 하는 방법에 대하여는 개시하지 않고 있다.
따라서, 가비지 컬렉터(12)에 의한 자원 해제 과정에 의하여 해제되지는 않았지만 접근이 불가능한 메모리 자원의 발생을 방지하는 발명의 등장이 요구된다.
본 발명은 현재 실행 중인 프로그램으로부터의 접근 가능성(reachability)에 따라 분류된 복수 개의 참조 객체(Reference Object)와 파이널라이저블 객체(Finalizable Object)의 종료(finalize) 상태를 확인하는 순서를 변경함으로써 참조 객체 및 파이널라이저블 객체를 통하여 접근 가능한 객체로 접근이 용이하도록 하는데 그 목적이 있다.
본 발명의 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 장치는 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지를 확인하는 접근 가능성 확인부와, 상기 확인 결과에 따라 상기 객체로의 접근 경로를 확인하는 접근 경로 확인부와, 상기 접근 경로의 순서를 결정하는 제어부 및 상기 순서에 따른 객체에 할당된 상기 메모리 자원의 해제를 수행하는 자원 해제부를 포함한다.
본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 방법은 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지를 확인하는 단계와, 상기 확인 결과에 따라 상기 객체로의 접근 경로를 확인하는 단계와, 상기 접근 경로의 순서를 결정하는 단계 및 상기 순서에 따른 객체에 할당된 상기 메모리 자원의 해제를 수행하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
도 3은 본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 장치를 나타낸 블록도로서, 자바 환경에서 자원을 관리하는 장치(이하, 자원 관리 장치라 한다)(300)는 제 1 메모리(310), 제 2 메모리(320), 접근 가능성 확인부(330), 자원 정보 갱신부(340), 제어부(350), 자원 해제부(360) 및 접근 경로 확인부(370)를 포함하여 구성된다.
이하, 자원 관리 장치(300)의 동작은 자바 프로그램에 의하여 구현되는 것을 가정하고 있으나, 이는 예시적인 것이 불과하며 기타 프로그램에 의하여 구현될 수 있음에 유의하여야 한다.
제 1 메모리(310)는 생성된 객체를 위하여 할당된 메모리 자원을 제공하는 역할을 한다. 제 1 메모리(310)의 메모리 영역은 코드 영역, 데이터 영역, 힙 영역 및 스택 영역을 포함하여 구성된다.
코드 영역은 코드 자체를 구성하는 메모리 영역으로서, 응용 프로그램 명령이 위치하는 영역이며 기계어로 제어되는 메모리 영역이다.
데이터 영역에는 데이터가 보관된다. 예를 들어, 전역 변수(Global Variable), 정적 변수(Static Variable) 및 그 외 초기화된 각종 배열과 구조 자료들이 저장된다.
힙 영역은 프로그래머가 스스로 할당한 메모리 영역을 의미한다. 예를 들어, 메모리 할당을 위한 함수 등이 사용되어 배정된 메모리가 힙 영역에 해당하는 것인 데, 객체가 생성되면 제 1 메모리(310)의 메모리 영역 중 힙 영역이 객체를 위하여 할당된다.
스택 영역은 응용 프로그램이 자동으로 사용하는 임시 메모리 영역에 해당된다. 즉, 자동 변수를 저장하거나 함수로 인수를 보낼 때, 복귀 번지를 저장할 때 등에 사용된다.
하나의 객체를 위하여 할당된 메모리 영역에는 객체의 활성 여부(liveness)를 나타내는 비트(이하, 활성 비트라 한다)가 포함될 수도 있다. 활성 비트는 객체의 활성 여부에 따라 true 또는 false의 값을 가질 수 있다. 즉, 객체가 활성 상태이면 활성 비트는 true의 값을 갖고 객체가 비활성 상태이면 활성 비트는 false의 값을 갖는 것인데, true의 값을 가진 객체는 자원 해제 대상에서 제외되고, false의 값을 가진 객체에 대해서만 자원 해제가 수행된다.
제 2 메모리(320)는 객체의 주소를 저장하는 역할을 한다. 자원 관리 장치(300)의 동작이 자바 프로그램에 의하여 구현된다고 할 때, 객체는 파이널라이저블 객체(Finalizable Object)를 통하여 접근 가능한(reachable) 객체(이하, 제 1 객체라 한다) 및 참조 객체(Reference Object)를 통하여 접근 가능한 객체(이하, 제 2 객체라 한다)를 포함한다.
여기서, 참조 객체는 참조 클래스(Reference Class)를 상속받은 클래스의 인스턴스로서, 특정 객체로의 접근 방식에 따라 소프트 참조 객체(Soft Reference Object), 위크 참조 객체(Weak Reference Object) 및 팬텀 참조 객체(Phantom Reference Object)로 분류된다.
한편, 제 1 객체란, 참조 객체 이외의 객체를 통하여 접근 가능한 객체로서 종료 함수(finalize function)의 수행에 따라 루트 셋으로부터 강하게 접근 가능하지(strongly reachable) 않은 객체를 의미한다.
자바 가상 머신의 구현 여부에 따라 각 참조 객체 및 파이널라이저블 객체를 위한 큐(queue)가 존재할 수 있는데, 제 2 메모리(320)에 이러한 큐가 위치하여 제 1 객체 및 제 2 객체의 주소가 저장될 수 있는 것이다.
한편, 도 3에서 제 1 메모리(310) 및 제 2 메모리(320)가 별도로 구비된 것을 나타내고 있으나 이는 하나의 예시적인 것에 불과하며, 하나의 저장 수단이 제 1 메모리(310) 및 제 2 메모리(320)의 역할을 수행할 수 있을 뿐만 아니라 각 메모리에 저장되는 데이터의 전체 또는 일부가 네트워크를 통해 연결된 별도의 저장 장치를 통해 관리될 수도 있다.
접근 가능성 확인부(330)는 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지(reachable)를 확인하는 역할을 한다. 여기서, 루트 셋은 참조를 통하여 접근 가능한 모든 객체의 집합을 포함한다.
제 1 메모리(310)의 힙 영역에는 객체를 위하여 할당된 메모리 영역이 존재하는데, 접근 가능성 확인부(330)는 이러한 객체들이 루트 셋을 통하여 접근 가능한지를 확인하는 것이다.
자원 정보 갱신부(340)는 제 1 메모리(310)에 저장된 활성 비트 및 제 2 메모리(320)에 저장된 큐를 갱신하는 역할을 수행한다. 이를 위하여 자원 정보 갱신부(340)는 활성 비트 갱신부(341) 및 큐 갱신부(342)를 포함할 수 있는데, 접근 가 능성 확인부(330)에 의한 객체의 접근 가능성 확인 작업이 시작되면 활성 비트 갱신부(341)는 제 1 메모리(310)에 저장된 활성 비트를 모두 false로 설정한다. 그리고, 활성 비트 갱신부(341)는 접근 가능성 확인부(330)에 의하여 확인된 객체가 루트 셋으로부터 접근 가능하면 true로 재설정하고, 루트 셋으로부터 접근 가능하지 않으면 false로 유지한다.
큐 갱신부(342)는 해당 객체가 참조 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 참조 객체의 종류에 대응하는 큐에 입력하고, 루트 셋으로부터 강하게 접근 가능하지 않은 객체의 주소를 파이널라이저블 객체의 큐에 입력한다.
접근 경로 확인부(370)는 접근 가능성 확인부(330)의 확인 결과에 따라 객체로의 접근 경로를 확인하는 역할을 한다. 즉, 객체로의 접근이 가능하다고 확인되면 접근 경로 확인부(370)는 해당 객체로의 접근 경로를 확인하는 것이다.
여기서, 접근 경로는 참조 클래스를 상속받은 클래스의 인스턴스인 참조 객체 또는 파이널라이저블 객체를 통하여 해당 객체로 접근하는 경로를 포함한다. 다시 말해, 접근 경로에는 소프트 참조 객체, 위크 참조 객체, 팬텀 참조 객체 및 파이널라이저블 객체를 통한 경로가 포함되는 것이다.
제어부(350)는 접근 경로의 순서를 결정하는 역할을 한다. 여기서, 제어부(350)는 접근 경로의 순서로서 파이널라이저블 객체를 통한 접근 경로가 참조 객체를 통한 접근 경로에 우선하도록 그 순서를 결정할 수 있다. 예를 들어, 파이널라이저블 객체, 소프트 참조 객체, 위크 참조 객체 및 팬텀 참조 객체 순으로 제어부(350)는 접근 경로의 순서를 결정할 수 있는 것인데 이에 따라, 동일한 하나의 객 체가 참조 객체 및 파이널라이저블 객체를 통하여 접근 가능한 경우 제 2 객체의 자원 해제 과정 이후에 제 1 객체의 자원 해제 과정을 수행함으로써 발생할 수 있는 해당 자원에 대한 할당이 메모리상에 존재하는 것을 방지할 수 있게 된다.
즉, 종래의 방법에 따르면 제 2 객체의 자원 해제를 위한 과정에서 제 2 객체가 NULL로 설정되고, 제 1 객체의 자원 해제를 위한 과정에서 종료 함수의 수행에 따라 제 1 객체의 활성 비트가 true로 설정되는데, 제 1 객체와 제 2 객체가 동일하므로 결국, 참조 객체로부터의 접근은 불가능하지만 여전히 힙 영역의 일부가 해당 객체를 위하여 할당된 상태가 유지된다.
한편, 제어부(350)에 의한 순서에 의하면 제 1 객체의 자원 해제를 위한 과정에서 종료 함수의 수행에 따라 제 1 객체의 활성 비트가 true로 설정되고, 종료 함수의 작업이 완료됨에 따라 제 1 객체에 할당된 자원이 해제된다. 그리고, 제 2 객체의 자원 해제를 위한 과정에서 제 2 객체가 NULL로 설정되므로 종래와 같은 문제점은 발생하지 않게 되는 것이다.
제 1 메모리(310)의 자원을 할당 받은 객체의 접근 가능성이 모두 확인되면 제어부(350)는 제 2 메모리(320)에서 참조 객체의 큐 및 파이널라이저블 객체의 큐에 입력된 주소를 추출하여 자원 해제부(360)로 전달한다.
이에 따라, 자원 해제부(360)는 전달받은 주소에 해당하는 객체에 할당된 메모리 자원을 해제한다. 즉, 자원 해제부(360)는 제 2 객체를 NULL로 설정하여 자원 해제를 수행하거나 제 1 객체에 할당된 메모리 영역에 대한 사용 권한을 운영 체계로 반환하여 자원 해제를 수행할 수 있다.
제 2 객체의 자원 해제를 위한 과정이 제 1 객체의 자원 해제를 위한 과정보다 우선하는 경우 종래의 문제점과 같이 메모리 자원의 낭비가 발생할 수 있는데, 자원 해제부(360)는 제어부(350)에 의하여 결정된 순서 즉, 제 1 객체의 자원 해제를 제 2 객체의 자원 해제에 우선하여 수행하므로 메모리 자원의 낭비가 발생하지 않게 된다.
도 4는 본 발명의 실시예에 따른 큐를 나타낸 도면으로서, 제 1 메모리(310)에 저장된 객체의 메모리 영역과 제 2 메모리(320)에 저장된 큐(410, 420, 430, 440)를 나타내고 있다.
큐는 데이터가 들어간 순서대로 제거되는 즉, 선입선출(FIFO, First In First Out)에 의하여 데이터가 처리되는 자료구조를 의미한다.
접근 가능성 확인부(330)에 의하여 확인된 객체(400)가 루트 셋으로부터 강하게 접근 가능하지 않는 경우 즉, 파이널라이저블 객체를 통하여 접근 가능하거나 참조 객체를 통하여 접근 가능한 경우 접근 가능성 확인부(330)는 해당 객체(400)의 주소를 큐 갱신부(342)로 전달하고, 큐 갱신부(342)는 제 2 메모리(320)에 구비된 큐(410, 420, 430, 440)에 해당 객체(400)의 주소를 입력한다.
제 2 메모리(320)의 큐(410, 420, 430, 440)는 객체(400)로의 접근 방식에 따라 4개로 분류될 수 있다. 즉, 큐는 소프트 참조 객체의 큐(410), 위크 참조 객체의 큐(420), 팬텀 참조 객체의 큐(430) 및 파이널라이저블 객체의 큐(440)로 분류될 수 있는 것이다.
이에 따라, 큐 갱신부(342)는 접근 방식에 따른 큐에 해당 객체(400)의 주소 를 입력한다. 즉, 해당 객체(400)가 소프트 참조 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 소프트 참조 객체의 큐(410)에 입력하고, 해당 객체가 위크 참조 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 위크 참조 객체의 큐(420)에 입력하고, 해당 객체가 팬텀 참조 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 팬텀 참조 객체의 큐(430)에 입력하고 그리고, 해당 객체가 파이널라이저블 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 파이널라이저블 객체의 큐(440)에 입력하는 것이다.
큐에 입력된 객체의 주소는 제어부(350)에 의하여 추출되는데, 제어부(350)는 주소가 입력된 큐의 순서에 상관없이 자신이 결정한 순서에 의하여 객체(400)의 주소를 추출할 수 있다. 예를 들어, 소프트 참조 객체의 큐(410), 위크 참조 객체의 큐(420), 파이널라이저블 객체의 큐(430) 및 팬텀 참조 객체의 큐(440) 순서로 객체(400)의 주소가 입력되었다고 하더라도 제어부(350)는 파이널라이저블 객체의 큐(440), 소프트 참조 객체의 큐(410), 위크 참조 객체의 큐(420) 및 팬텀 참조 객체의 큐(430) 순서로 객체(400)의 주소를 추출할 수 있는 것이다.
도 5a 내지 도 5d는 본 발명의 실시예에 따른 순서에 따라 자원이 해제되는 것을 나타낸 개념도로서, 도 5a는 파이널라이저블 객체(540), 소프트 참조 객체(510), 위크 참조 객체(520) 및 팬텀 참조 객체(530)를 통하여 접근되는 하나의 객체(500)에 파이널라이저블 객체(540)를 통하여 접근 가능한 객체의 자원 해제 작업(이하, 제 1 자원 해제라 한다)이 수행되는 것을 나타낸다.
제 1 자원 해제가 수행되면 객체(500)가 포함하는 종료 함수가 수행되고, 종 료 함수가 수행됨에 따라 객체(500)의 활성 비트는 true로 설정된다. 즉, 객체(500)는 루트 셋으로부터 강하게 접근 가능한 객체가 되는 것이다. 그리고, 객체(500)의 상태는 종료 가능 상태 및 종료 중 상태를 거쳐 종료 완료 상태가 되는데, 종료 완료 상태가 됨에 따라 활성 비트는 false로 설정되고, 객체(500)의 주소가 파이널라이저블 객체의 큐(440)에 입력된다.
그리고, 파이널라이저블 객체의 큐(440)에 입력된 객체(500)의 주소는 제어부(350)에 의하여 추출되어 자원 해제부(360)로 전달되고, 자원 해제부(360)는 해당 주소의 메모리 영역을 운영 체계로 반환하여 자원을 해제한다. 이에 따라, 객체(500)는 파이널라이저블 객체(540)로부터의 접근이 가능하지 않게 되며, 도 5b에 도시된 바와 같이 객체(500)는 소프트 참조 객체(510), 위크 참조 객체(520) 및 팬텀 참조 객체(530)를 통하여 접근 가능하게 된다.
도 5b는 소프트 참조 객체(510)를 통하여 접근 가능한 객체의 자원 해제 작업(이하, 제 2 자원 해제라 한다)이 수행되는 것을 나타낸다.
제 2 자원 해제가 수행되면 객체(500)의 활성 비트는 false로 유지되고, 객체(500)의 주소가 소프트 참조 객체의 큐(410)에 입력된다. 전술한 바와 같이, 접근 가능성 확인부(330)에 의한 객체의 접근 가능성 확인 작업이 시작되면 활성 비트 갱신부(341)는 제 2 메모리(320)에 저장된 활성 비트를 모두 false로 설정하므로, 활성 비트 갱신부(341)는 제 2 자원 해제가 수행됨에 따라 객체(500)의 활성 비트를 갱신할 필요가 없게 된다.
그리고, 소프트 참조 객체의 큐(410)에 입력된 객체(500)의 주소는 제어부 (350)에 의하여 추출되어 자원 해제부(360)로 전달되고, 자원 해제부(360)는 객체(500)를 NULL로 설정한다. 이에 따라, 객체(500)는 소프트 참조 객체(510)로부터의 접근이 가능하지 않게 되며, 도 5c에 도시된 바와 같이 객체(500)는 위크 참조 객체(520) 및 팬텀 참조 객체(530)를 통하여 접근 가능하게 된다.
도 5c는 위크 참조 객체(520)를 통하여 접근 가능한 객체의 자원 해제 작업(이하, 제 3 자원 해제라 한다)이 수행되는 것을 나타낸다.
제 3 자원 해제가 수행되면 객체(500)의 활성 비트는 false로 유지되고, 객체(500)의 주소가 위크 참조 객체의 큐(420)에 입력된다.
그리고, 위크 참조 객체의 큐(420)에 입력된 객체(500)의 주소는 제어부(350)에 의하여 추출되어 자원 해제부(360)로 전달되고, 자원 해제부(360)는 객체(500)를 NULL로 설정한다. 이에 따라, 객체(500)는 위크 참조 객체(520)로부터의 접근이 가능하지 않게 되며, 도 5d에 도시된 바와 같이 객체(500)는 팬텀 참조 객체(530)를 통하여 접근 가능하게 된다.
도 5d는 팬텀 참조 객체(530)를 통하여 접근 가능한 객체의 자원 해제 작업(이하, 제 4 자원 해제라 한다)이 수행되는 것을 나타낸다.
제 4 자원 해제가 수행되면 객체(500)의 활성 비트는 false로 유지되고, 객체(500)의 주소가 팬텀 참조 객체의 큐(430)에 입력된다.
그리고, 팬텀 참조 객체의 큐(430)에 입력된 객체(500)의 주소는 제어부(350)에 의하여 추출되어 자원 해제부(360)로 전달되고, 자원 해제부(360)는 객체(500)를 NULL로 설정한다. 이에 따라, 객체(500)는 팬텀 참조 객체(530)로부터의 접근이 가능하지 않게 되며 결국, 도 5e와 같이 객체(500)로의 접근 경로가 모두 소멸되어 객체(500)에 할당된 메모리 자원 해제가 완료된다.
도 6은 본 발명의 실시예에 따른 자바 환경에서 자원을 관리하는 과정을 나타낸 흐름도이다.
자바 환경에서 자원을 관리하기 위하여 자원 정보 갱신부(340)의 활성 비트 갱신부(341)는 우선 제 1 메모리(310)에 저장된 활성 비트를 모두 false로 설정한다(S610).
그리고, 자원 관리 장치(300)의 접근 가능성 확인부(330)는 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지를 확인한다(S620).
확인된 객체의 정보는 자원 정보 갱신부(340)로 전달되고, 자원 정보 갱신부(340)는 제 1 메모리(310)에 저장된 객체의 활성 비트 및 제 2 메모리(320)에 저장된 큐를 갱신한다(S631, S632). 여기서, 자원 정보 갱신부(340)의 큐 갱신부(342)는 해당 객체가 참조 객체를 통하여 접근 가능한 경우 해당 객체의 주소를 참조 객체의 종류에 대응하는 큐에 입력하고, 루트 셋으로부터 강하게 접근 가능하지 않은 객체의 주소를 파이널라이저블 객체의 큐(440)에 입력한다.
그리고, 접근 경로 확인부(370)는 접근 가능성 확인부(330)의 확인 결과에 따라 객체로의 접근 경로를 확인한다(S640). 즉, 객체로의 접근이 가능하다고 확인되면 접근 경로 확인부(370)는 해당 객체로의 접근 경로를 확인하는 것이다.
여기서, 접근 경로는 소프트 참조 객체, 위크 참조 객체, 팬텀 참조 객체 및 파이널라이저블 객체를 통하여 해당 객체로 접근하는 경로를 포함한다.
그리고, 제어부(350)는 접근 경로의 순서를 결정한다(S650). 즉, 할당된 메모리 자원의 해제를 위한 순서로서 접근 경로의 종류에 따라 그 순서를 결정하는 것인데 이 때, 제어부(350)는 파이널라이저블 객체를 통한 접근 경로가 참조 객체를 통한 접근 경로에 우선하도록 그 순서를 결정할 수 있다. 다시 말해, 제 1 객체의 자원 해제 작업이 제 2 객체의 자원 해제 작업에 우선하도록 순서를 결정하는 것으로서 예를 들어, 파이널라이저블 객체, 소프트 참조 객체, 위크 참조 객체 및 팬텀 참조 객체 순으로 접근 경로의 순서를 결정할 수 있는 것이다. 여기서, 제어부(350)에 의하여 결정되는 접근 경로의 순서는 사전에 사용자에 의하여 입력된 것일 수도 있다.
그리고, 제어부(350)는 결정된 순서에 따라 제 2 메모리(320)에 저장된 큐에서 객체의 주소를 추출한다(S660). 즉, 파이널라이저블 객체의 큐(440)에 저장된 객체의 큐를 우선 추출하고, 소프트 참조 객체의 큐(410), 위크 참조 객체의 큐(420) 및 팬텀 참조 객체의 큐(430) 순으로 객체의 주소를 추출하는 것이다.
추출된 주소는 자원 해제부(360)로 전달되고, 자원 해제부(360)는 전달받은 순서에 따라 객체에 할당된 메모리 자원의 해제를 수행한다(S670). 즉, 제 1 객체에 할당된 메모리 영역에 대한 사용 권한을 운영 체계로 반환하여 자원 해제를 수행한 후에 제 2 객체를 NULL로 설정하여 자원 해제를 수행하는 것이다. 자원 해제에 대한 자세한 설명은 도 5a 내지 도 5d를 통하여 전술하였으므로 생략하기로 한다.
도 3의 블록도의 각 블록과 도 6의 흐름도의 각 단계의 조합들은 컴퓨터 프 로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 블록도의 각 블록 또는 흐름도의 각 단계에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 블록도의 각 블록 또는 흐름도 각 단계에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 블록도의 각 블록 및 흐름도의 각 단계에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록 또는 각 단계는 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행예들에서는 블록들 또는 단계들에서 언 급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들 또는 단계들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들 또는 단계들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
이상 첨부된 도면을 참조하여 본 발명의 실시예를 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
상기한 바와 같은 본 발명의 자바 환경에서 자원을 관리하는 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 참조 객체(Reference Object)와 파이널라이저블 객체(Finalizable Object)의 종료(finalize) 상태를 확인하는 순서를 변경하여 참조 객체 및 파이널라이저블 객체를 통하여 접근 가능한 객체로 접근이 용이하도록 함으로써 메모리 자원의 낭비를 감소시킬 수 있는 장점이 있다.
둘째, 참조 객체 및 파이널라이저블 객체를 통하여 접근 가능한 객체로 접근이 용이하도록 함으로써 해당 메모리 자원으로의 접근 불능에 따른 오동작을 감소시킬 수 있는 장점도 있다.

Claims (14)

  1. 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지를 확인하는 접근 가능성 확인부;
    상기 확인 결과에 따라 참조 클래스를 상속받은 클래스의 인스턴스인 참조 객체 또는 파이널라이저블 객체를 통하여 상기 객체로 접근 가능한 적어도 하나 이상의 접근 경로를 확인하는 접근 경로 확인부;
    상기 접근 경로의 순서를 결정하는 제어부; 및
    상기 순서에 따른 객체에 할당된 상기 메모리 자원의 해제를 수행하는 자원 해제부를 포함하는 자바 환경에서 자원을 관리하는 장치.
  2. 제 1항에 있어서,
    상기 루트 셋은 참조를 통하여 접근 가능한 모든 객체의 집합을 포함하는 자바 환경에서 자원을 관리하는 장치.
  3. 삭제
  4. 제 1항에 있어서,
    상기 참조 객체는 소프트 참조 객체(Soft Reference Object), 위크 참조 객체(Weak Reference Object) 및 팬텀 참조 객체(Phantom Reference Object) 중 적어도 하나를 포함하는 자바 환경에서 자원을 관리하는 장치.
  5. 제 1항에 있어서,
    상기 접근 경로의 순서는 상기 파이널라이저블 객체를 통한 접근 경로가 상기 참조 객체를 통한 접근 경로에 우선하는 순서를 포함하는 자바 환경에서 자원을 관리하는 장치.
  6. 제 1항에 있어서,
    상기 자원 해제부는 상기 참조 객체를 통하여 접근 가능한 객체를 NULL로 설정하여 상기 해제를 수행하는 자바 환경에서 자원을 관리하는 장치.
  7. 제 1항에 있어서,
    상기 자원 해제부는 상기 파이널라이저블 객체를 통하여 접근 가능한 객체에 할당된 메모리 영역에 대한 사용 권한을 운영 체계로 반환하여 상기 해제를 수행하는 자바 환경에서 자원을 관리하는 장치.
  8. 메모리 자원을 할당 받은 객체가 루트 셋을 통하여 접근 가능한지를 확인하는 단계;
    상기 확인 결과에 따라 참조 클래스를 상속받은 클래스의 인스턴스인 참조 객체 또는 파이널라이저블 객체를 통하여 상기 객체로 접근 가능한 적어도 하나 이상의 접근 경로를 확인하는 단계;
    상기 접근 경로의 순서를 결정하는 단계; 및
    상기 순서에 따른 객체에 할당된 상기 메모리 자원의 해제를 수행하는 단계를 포함하는 자바 환경에서 자원을 관리하는 방법.
  9. 제 8항에 있어서,
    상기 루트 셋은 참조를 통하여 접근 가능한 모든 객체의 집합을 포함하는 자바 환경에서 자원을 관리하는 방법.
  10. 삭제
  11. 제 8항에 있어서,
    상기 참조 객체는 소프트 참조 객체(Soft Reference Object), 위크 참조 객체(Weak Reference Object) 및 팬텀 참조 객체(Phantom Reference Object) 중 적어도 하나를 포함하는 자바 환경에서 자원을 관리하는 방법.
  12. 제 8항에 있어서,
    상기 접근 경로의 순서는 상기 파이널라이저블 객체를 통한 접근 경로가 상기 참조 객체를 통한 접근 경로에 우선하는 순서를 포함하는 자바 환경에서 자원을 관리하는 방법.
  13. 제 8항에 있어서,
    상기 해제를 수행하는 단계는 상기 참조 객체를 통하여 접근 가능한 객체를 NULL로 설정하는 단계를 포함하는 자바 환경에서 자원을 관리하는 방법.
  14. 제 8항에 있어서,
    상기 해제를 수행하는 단계는 상기 파이널라이저블 객체를 통하여 접근 가능한 객체에 할당된 메모리 영역에 대한 사용 권한을 운영 체계로 반환하는 단계를 포함하는 자바 환경에서 자원을 관리하는 방법.
KR1020060018281A 2006-02-24 2006-02-24 자바 환경에서 자원을 관리하는 장치 및 방법 KR100772871B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020060018281A KR100772871B1 (ko) 2006-02-24 2006-02-24 자바 환경에서 자원을 관리하는 장치 및 방법
US11/655,923 US7664800B2 (en) 2006-02-24 2007-01-22 Apparatus and method for managing resource on java environment
EP07102836A EP1835407A3 (en) 2006-02-24 2007-02-21 Apparatus and method for managing resources in a Java environment
JP2007042023A JP2007226808A (ja) 2006-02-24 2007-02-22 ジャバ環境において資源を管理する装置および方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060018281A KR100772871B1 (ko) 2006-02-24 2006-02-24 자바 환경에서 자원을 관리하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20070088098A KR20070088098A (ko) 2007-08-29
KR100772871B1 true KR100772871B1 (ko) 2007-11-02

Family

ID=38326191

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060018281A KR100772871B1 (ko) 2006-02-24 2006-02-24 자바 환경에서 자원을 관리하는 장치 및 방법

Country Status (4)

Country Link
US (1) US7664800B2 (ko)
EP (1) EP1835407A3 (ko)
JP (1) JP2007226808A (ko)
KR (1) KR100772871B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727355B (zh) * 2008-10-31 2013-02-20 国际商业机器公司 用于内存访问事件的处理方法和系统
US8473529B2 (en) * 2011-03-14 2013-06-25 International Business Machines Corporation Single pass marking of finalizable objects

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20030196061A1 (en) 2002-04-16 2003-10-16 Hideya Kawahara System and method for secure execution of multiple applications using a single GC heap
US20040168028A1 (en) 2003-02-25 2004-08-26 Michal Cierniak Priority-based code cache management
US6978285B2 (en) 2002-08-22 2005-12-20 Intel Corporation Methods and apparatus for concurrent enumeration of an object reference root set

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415334B1 (en) * 1997-05-14 2002-07-02 Microsoft Corporation Method and system for accessing objects of different thread types
US6070173A (en) * 1997-11-26 2000-05-30 International Business Machines Corporation Method and apparatus for assisting garbage collection process within a java virtual machine
US6671707B1 (en) 1999-10-19 2003-12-30 Intel Corporation Method for practical concurrent copying garbage collection offering minimal thread block times
GB0007493D0 (en) 2000-03-28 2000-05-17 Tao Group Ltd Garbage collection
US6874074B1 (en) * 2000-11-13 2005-03-29 Wind River Systems, Inc. System and method for memory reclamation
US6928460B2 (en) 2002-07-01 2005-08-09 Sun Microsystems, Inc. Method and apparatus for performing generational garbage collection in a segmented heap
US7174354B2 (en) * 2002-07-31 2007-02-06 Bea Systems, Inc. System and method for garbage collection in a computer system, which uses reinforcement learning to adjust the allocation of memory space, calculate a reward, and use the reward to determine further actions to be taken on the memory space
US7069279B1 (en) * 2002-11-04 2006-06-27 Savaje Technologies, Inc. Timely finalization of system resources
US7444484B2 (en) * 2004-06-24 2008-10-28 International Business Machines Corporation Method and system for determining memory usage of a heap
WO2007075146A2 (en) * 2005-12-26 2007-07-05 Chee Ying Josiah Goh Visual-based object oriented programming language and system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US20030196061A1 (en) 2002-04-16 2003-10-16 Hideya Kawahara System and method for secure execution of multiple applications using a single GC heap
US6978285B2 (en) 2002-08-22 2005-12-20 Intel Corporation Methods and apparatus for concurrent enumeration of an object reference root set
US20040168028A1 (en) 2003-02-25 2004-08-26 Michal Cierniak Priority-based code cache management

Also Published As

Publication number Publication date
JP2007226808A (ja) 2007-09-06
KR20070088098A (ko) 2007-08-29
EP1835407A3 (en) 2009-09-09
US7664800B2 (en) 2010-02-16
US20070226282A1 (en) 2007-09-27
EP1835407A2 (en) 2007-09-19

Similar Documents

Publication Publication Date Title
US8006246B2 (en) Apparatus for forcibly terminating thread blocked on input/output operation and method for the same
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
US7979659B2 (en) Memory management method and computer using the method
US8782610B2 (en) Method of tracing object allocation site in program, as well as computer system and computer program therefor
US20050262313A1 (en) Modified computer architecture with coordinated objects
US6996590B2 (en) Method and system for the garbage collection of shared data
EP3462324B1 (en) Pointers in a memory managed system
US7840967B1 (en) Sharing data among isolated applications
US7770177B2 (en) System for memory reclamation based on thread entry and release request times
US20200409841A1 (en) Multi-threaded pause-less replicating garbage collection
EP2024838B1 (en) Creating references in a scoped memory system
US6985976B1 (en) System, method, and computer program product for memory management for defining class lists and node lists for allocation and deallocation of memory blocks
US8266190B2 (en) Memory management for garbage collection of critical real time threads
US20100107216A1 (en) Information processing device and memory management method
US7584452B1 (en) System and method for controlling the visibility and use of data in a programming environment
KR100772871B1 (ko) 자바 환경에서 자원을 관리하는 장치 및 방법
Desell et al. Salsa lite: A hash-based actor runtime for efficient local concurrency
US7945920B2 (en) Enforcing proper resolution for classes of shared objects in a virtual machine
Kästner et al. Safety-critical software development in c++
JPH07152551A (ja) コンピュータシステムおよびプログラム実行方法
Bollella et al. Scoped memory
CN114579301A (zh) 面向国产异构众核加速计算核心局部存储的管理方法
Oliveira et al. Memory Management
JP2023538512A (ja) ガベージ・コレクションをフィンガ・ポインタで同時マーク付けするためのワーク・スティーリング
US20150269066A1 (en) Indirect resource management

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
FPAY Annual fee payment

Payment date: 20120914

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee