KR100631782B1 - Efficient Memory Management Method and Device in Object-Oriented Application - Google Patents
Efficient Memory Management Method and Device in Object-Oriented Application Download PDFInfo
- Publication number
- KR100631782B1 KR100631782B1 KR1020040070939A KR20040070939A KR100631782B1 KR 100631782 B1 KR100631782 B1 KR 100631782B1 KR 1020040070939 A KR1020040070939 A KR 1020040070939A KR 20040070939 A KR20040070939 A KR 20040070939A KR 100631782 B1 KR100631782 B1 KR 100631782B1
- Authority
- KR
- South Korea
- Prior art keywords
- application
- memory
- information
- memory area
- allocated
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
본 발명은 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법 및 장치에 관한 것이다.The present invention relates to an efficient memory management method and apparatus in an object-oriented application.
본 발명의 일 실시예에 따른 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법은 객체에 메모리 할당을 요청하는 신호를 수신하는 단계, 상기 어플리케이션 관리자로부터 상기 객체가 구성하는 어플리케이션에 대한 정보를 수신하는 단계, 상기 객체에 메모리를 할당하는 단계 및 상기 어플리케이션에 대한 정보와 상기 객체에 할당된 메모리의 위치 정보를 저장하는 단계를 포함한다.An efficient memory management method in an object-oriented application according to an embodiment of the present invention comprises the steps of: receiving a signal for requesting memory allocation to an object, receiving information about an application configured by the object from the application manager; Allocating memory to an object and storing information about the application and location information of the memory allocated to the object.
객체지향, 가비지 수집(Garbage Collection), 엑슬릿, 애플릿, 메모리Object Oriented, Garbage Collection, Exlets, Applets, Memory
Description
도 1은 본 발명의 일 실시예에 따른 엑슬릿의 동작 단계를 보여주는 블록도이다.1 is a block diagram showing an operation step of an exlet according to an embodiment of the present invention.
도 2는 종래의 메모리 관리자와 어플리케이션 관리자의 구성을 보여주는 블록도이다.2 is a block diagram showing the configuration of a conventional memory manager and application manager.
도 3은 종래 기술에 따른 엑슬릿의 객체가 메모리에 할당된 후 엑슬릿이 소멸되는 과정을 보여주는 예시도이다.3 is an exemplary view illustrating a process in which an exlet is destroyed after an object of the exlet according to the prior art is allocated to a memory.
도 4는 본 발명의 일 실시예에 따른 메모리 관리자와 어플리케이션 관리자와의 상호 작용을 보여주는 구성도이다.4 is a block diagram illustrating interaction between a memory manager and an application manager according to an exemplary embodiment of the present invention.
도 5는 본 발명의 일 실시예에 따른 객체에 메모리를 할당하는 과정을 보여주는 순서도이다.5 is a flowchart illustrating a process of allocating a memory to an object according to an embodiment of the present invention.
도 6은 본 발명의 일 실시예에 따른 객체가 소멸할 경우 메모리를 회수하는 과정을 보여주는 순서도이다. 6 is a flowchart illustrating a process of recovering a memory when an object is destroyed according to an embodiment of the present invention.
도 7은 본 발명의 일 실시예에 따른 객체 할당을 보여주는 예시도이다.7 is an exemplary view showing object allocation according to an embodiment of the present invention.
도 8은 본 발명의 일 실시예에 따른 리소스 제거를 보여주는 예시도이다.8 is an exemplary view illustrating resource removal according to an embodiment of the present invention.
도 9는 본 발명의 일 실시예에 따른 메모리 영역의 회수를 보여주는 예시도 이다.9 is an exemplary view showing the number of memory areas according to an embodiment of the present invention.
도 10은 본 발명의 일 실시예에 따른 메모리 관리자와 메모리의 구성을 보여주는 블록도이다.10 is a block diagram illustrating a configuration of a memory manager and a memory according to an embodiment of the present invention.
<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>
100 : 시스템 120 : 메모리 관리자100: system 120: memory manager
140 : 어플리케이션 관리자140: application manager
객체지향 프로그래밍(Object-Oriented Programming)은 컴퓨터 프로그램의 개발 방법의 하나로 동작보다는 객체, 논리보다는 자료를 바탕으로 구성된다. 과거 프로그램은 전통적으로 논리적인 수행 즉, 입력을 받아 처리한 다음, 결과를 내는 것으로 보는 시각이 지배적이었다. 또한 프로그래밍을 한다는 것은 어떻게 자료를 정의할까 보다는 어떻게 논리를 써나가는 것인가로 간주되었다.Object-Oriented Programming is a method of developing computer programs that is based on data rather than objects and logic rather than operations. In the past, programs were traditionally dominated by a logical view: taking input, processing it, and then producing results. Programming was also considered as how to write logic rather than how to define data.
그러나 객체지향 프로그래밍은 프로그램에서 중요한 것이 논리보다는 오히려 다루고자 하는 객체라는 시각에서 접근하고 있다. 객체의 예로는, 사람(이름, 주소 등으로 묘사되는)에서부터 건물까지, 그리고 상품 판매를 위한 매장(특성이 서술되고 다뤄질 수 있는)에서부터 컴퓨터 바탕화면의 아주 작은 요소인 버튼이나 스크롤바 같은 것들까지를 모두 망라한다.However, object-oriented programming is approached from the point of view of what is important in the program is the object to be handled rather than the logic. Examples of objects include people (depicted by name, address, etc.) to buildings, and stores for merchandise (characteristics can be described and manipulated), such as buttons and scrollbars that are tiny elements of the computer desktop. It all covers
객체지향 프로그래밍에서의 첫 단계는 다루고자 하는 모든 객체와 그것들이 서로 어떤 연관성이 있는지를 식별하는 - 흔히 데이터 모델링이라고 부르는 - 작업이다. 일단 모든 객체를 식별했으면, 객체 클래스로 일반화하고 그것이 담고 있는 데이터의 종류와 그것을 다룰 수 있는 모든 논리 순서를 정의한다.The first step in object-oriented programming is to identify all the objects you want to deal with and how they relate to each other-often called data modeling. Once you have identified all objects, you generalize them to an object class and define the kind of data it contains and all the logical sequences that can handle it.
논리 순서는 메쏘드(method)라고 부르며, 클래스의 실제 인스턴스(instance)를 하나의 "객체"라 하거나, 어떤 상황에서는 하나의 "클래스 활성체"라 한다. 객체 또는 활성체는 컴퓨터 내에서 실제로 수행되는 것이다. 메쏘드는 컴퓨터 명령어를 규정하고, 클래스 객체의 특성은 관련 데이터를 규정한다.The logical order is called a method, and the actual instance of a class is called a "object" or, in some situations, a "class activator". An object or activator is what is actually performed in a computer. Methods define computer instructions, and the properties of class objects define related data.
스몰토크(Smalltalk)는 최초의 객체지향 프로그래밍 언어 중 하나이며, C++와 자바(Java)는 최근 가장 인기있는 객체지향 프로그래밍 언어이다. 특히 자바는 기업이나 인터넷의 분산 응용프로그램에 사용되도록 설계되었다. 또한 자바는 자바 가상 머신에서 실행되므로, 프로그램이 시스템의 하드웨어에 독립적으로 동작할 수 있게 한다. 그 결과 자바는 많은 다양한 디지털 장치에서 주도적인 어플리케이션의 역할을 하거나, 임베디드(Embedded)되어 기능을 수행하고 있다.Smalltalk is one of the first object-oriented programming languages, and C ++ and Java are the most popular object-oriented programming languages in recent years. In particular, Java is designed to be used for distributed applications in the enterprise and on the Internet. Java also runs on the Java virtual machine, allowing programs to operate independently of the system's hardware. As a result, Java serves as a leading application in many different digital devices or is embedded and functioning.
컴퓨팅 능력과 디지털 문명의 발전으로 종래 컴퓨터 시스템에 한정적이던 프로그램이 다양한 디지털 장치에서 동작하게 되었다. 특히, 멀티미디어와 디지털 방송의 발전으로 디지털 TV와 휴대폰 등에 대한 연구가 증대되고 있다. 디지털 TV, 휴대폰 등은 멀티미디어를 수신하면서, 또한 사용자와의 상호 동작을 수행하기 때문에 많은 기능의 구현을 필요로 한다. 디지털 TV의 경우, 인터액티브 TV(Interactive TV)의 구현을 위해, 사용자와의 인터페이스와 연동된 기능을 필요로 한다. 이를 위해 자바와 C++, CORBA(Common Object Request Broker Architecture) 등의 애플릿, 컴포넌트, 분산 객체등이 디지털 장치에서 운영되고 있다.Advances in computing power and digital civilization have made programs that have been limited to conventional computer systems run on a variety of digital devices. In particular, with the development of multimedia and digital broadcasting, research on digital TV and mobile phones is increasing. Digital TVs, mobile phones, etc. require the implementation of many functions while receiving multimedia and also interacting with the user. In the case of digital TV, in order to implement interactive TV, an interface with a user is required. To this end, applets, components, and distributed objects such as Java, C ++, and Common Object Request Broker Architecture (CORBA) are running on digital devices.
한편 상기의 객체지향 컴포넌트, 혹은 애플릿 등의 어플리케이션 프로그램들을 수행하기 위해서는 메모리의 관리가 필요하다. 상기의 어플리케이션 프로그램들은 컴퓨터, 휴대폰, 디지털 TV의 경우 잦은 로딩과 소멸을 반복하게 되는데, 이 경우 더 이상 사용하지 않는 메모리를 가용 메모리로 빨리 전환시켜주는 작업이 필요하다. 이를 위해 가비지 수집(Garbage Collection)이 있다. 그러나 가비지 수집을 하기 위해서는 전체 메모리의 검색과 전환을 필요로 하기 때문에 객체 생성과 소멸이 잦은 시스템에서는 효율적이지 못한 면이 있다. 더구나 디지털 TV 혹은 휴대폰과 같은 장치는 컴퓨터에 비하여 메모리의 크기가 제한되는 경우가 많으므로 객체지향 프로그램을 실행함에 있어서 메모리를 효율적으로 관리하는 방법이 필요하다.Meanwhile, memory management is required to execute the application programs such as the object-oriented component or the applet. The above application programs are frequently loaded and destroyed in the case of computers, mobile phones, and digital TVs. In this case, it is necessary to quickly convert a memory that is no longer used into available memory. To do this, there is a garbage collection. However, garbage collection requires the retrieval and conversion of the entire memory, which is inefficient on systems with frequent object creation and destruction. In addition, devices such as digital TVs or mobile phones are often limited in size compared to computers, and thus, there is a need for a method of efficiently managing memory in executing an object-oriented program.
본 발명의 기술적 과제는 객체지향 프로그램을 실행함에 있어서 메모리 관리의 효율을 증대시키는 데 있다.An object of the present invention is to increase the efficiency of memory management in executing an object-oriented program.
본 발명의 다른 기술적 과제는 객체지향 프로그램의 실행에 있어서 객체에 메모리를 할당하는 것을 어플리케이션별로 구분지을 수 있도록 할당하여 추후 어플리케이션이 소멸할 경우 해당 객체가 차지하는 메모리의 회수가 신속히 이루어지도록 하는데 있다.Another technical problem of the present invention is to allocate the memory to an object so that the application can be distinguished in the execution of an object-oriented program so that the memory occupied by the object can be quickly obtained when the application is later destroyed.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것 이다.The objects of the present invention are not limited to the above-mentioned objects, and other objects that are not mentioned will be clearly understood by those skilled in the art from the following description.
본 발명은 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법 및 장치에 관한 것이다.The present invention relates to an efficient memory management method and apparatus in an object-oriented application.
본 발명의 일 실시예에 따른 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법은 객체에 메모리 할당을 요청하는 신호를 수신하는 단계, 상기 어플리케이션 관리자로부터 상기 객체가 구성하는 어플리케이션에 대한 정보를 수신하는 단계, 상기 객체에 메모리를 할당하는 단계 및 상기 어플리케이션에 대한 정보와 상기 객체에 할당된 메모리의 위치 정보를 저장하는 단계를 포함한다.An efficient memory management method in an object-oriented application according to an embodiment of the present invention comprises the steps of: receiving a signal for requesting memory allocation to an object, receiving information about an application configured by the object from the application manager; Allocating memory to an object and storing information about the application and location information of the memory allocated to the object.
본 발명의 다른 실시예에 따른 객체지향 어플리케이션에서의 효율적인 메모리 관리 방법은 객체지향 어플리케이션이 소멸하는 경우, 상기 어플리케이션의 소멸을 알리는 신호를 수신하는 단계, 상기 어플리케이션을 구성하는 객체에 할당된 메모리 영역을 검토하는 단계, 및 상기 메모리 영역을 가용 메모리로 회수하는 단계를 포함한다.According to another aspect of the present invention, there is provided an efficient memory management method of an object-oriented application, when an object-oriented application is destroyed, receiving a signal indicating the destruction of the application, and determining a memory area allocated to an object constituting the application. Reviewing, and recovering the memory area to available memory.
본 발명의 일 실시예에 따른 객체지향 어플리케이션에서의 효율적인 메모리 관리 장치는 객체에 메모리 할당을 요청하는 신호를 수신하고, 어플리케이션 관리자로부터 상기 객체가 구성하는 어플리케이션에 대한 정보를 수신하는 객체 정보 수신부, 상기 수신한 정보를 저장하여 관리하는 어플리케이션 메모리 관리부, 및 상기 객체에 메모리를 할당하는 메모리 할당 관리부를 포함하며, 상기 어플리케이션 메모리 관리부는 상기 어플리케이션에 대한 정보와 상기 객체에 할당한 메모리 의 위치 정보를 저장한다.An efficient memory management apparatus in an object-oriented application according to an embodiment of the present invention may include: an object information receiver configured to receive a signal for requesting memory allocation for an object and to receive information about an application configured by the object from an application manager; An application memory manager configured to store and manage the received information; and a memory allocation manager configured to allocate memory to the object, wherein the application memory manager stores information about the application and location information of the memory allocated to the object. .
본 명세서에서 사용하는 용어를 정리하면 다음과 같다.The terms used in the present specification are summarized as follows.
- 액티브엑스 컨트롤ActiveX Control
액티브엑스 컨트롤(ActiveX control)은 마이크로소프트의 COM(Component Object Model)을 지원하는 모든 프로그램 언어로 만들 수 있다. 액티브엑스 컨트롤은 컴포넌트 또는 독립적인 프로그램으로서 하나의 컴퓨터 또는 분산 네트웍에서 많은 응용프로그램에 의해 생성되고 재사용될 수 있다. COM에서 분산 환경을 지원하는 것을 특별히 DCOM(distributed component object model)이라 부른다. 액티브엑스 컨트롤을 실제로 구현하는 측면에서 보면, 일종의 DLL 모듈이라할 수 있는데, "컨테이너"라 부르는 COM 프로그램 인터페이스를 가진 응용프로그램 내에서 수행된다. 재사용 가능한 컴포넌트를 이용하는 접근방식은 응용프로그램의 개발시간 단축과 프로그램 기능 및 품질 향상에 기여한다. 파워빌더와 마이크로소프트 액세스(Access)와 같은 윈도우95/NT용 응용프로그램 개발 도구들은 이와 같은 액티브엑스 컨트롤의 이점을 활용하고 있다. 비주얼 베이직과 C++는 OCX나 액티브엑스 컨트롤을 제작하는데 널리 쓰인다.ActiveX controls can be written in any programming language that supports Microsoft's Component Object Model (COM). ActiveX controls are components or independent programs that can be created and reused by many applications on a single computer or distributed network. Support for distributed environments in COM is specifically called the distributed component object model (DCOM). In terms of the actual implementation of ActiveX controls, it's a type of DLL module that runs inside an application with a COM program interface called a "container." Approaches that use reusable components contribute to shortening the development time of the application and improving the program's functionality and quality. Application development tools for Windows 95 / NT, such as PowerBuilder and Microsoft Access, take advantage of these ActiveX controls. Visual Basic and C ++ are widely used to create OCX or ActiveX controls.
- 자바- Java
자바는 인터넷의 분산환경에서 사용되도록 설계된 프로그래밍 언어이다. 자바는 C++ 언어처럼 보이지만, C++ 보다는 사용하기에 간단하고 프로그래밍의 완전한 객체지향성을 강화하였다. 자바는 한 대의 컴퓨터나, 네트웍 상의 분산 클라이언트/서버 환경에서도 실행되는 응용프로그램을 만드는데 모두 사용될 수 있다. 이 것은 또한 웹페이지의 일부로서 쓰이는 작은 응용프로그램 모듈이나 애플릿 등을 만드는 데에도 사용될 수 있다. 애플릿들은 사용자들이 웹페이지를 통해 상호작용을 할 수 있도록 해준다. Java is a programming language designed to be used in the distributed environment of the Internet. Java looks like a C ++ language, but it is simpler to use than C ++ and enhances the full object-oriented nature of programming. Java can be used to create applications that run on a single computer or in a distributed client / server environment on a network. It can also be used to create small application modules or applets that are used as part of a web page. Applets allow users to interact with web pages.
- 자바 어플리케이션Java applications
자바 어플리케이션은 자바의 객체들을 이용하여 자바 가상 머신(Java Virtual Machine)에서 실행되는 프로그램을 의미한다. 자바 어플리케이션에는 애플릿(Applet), 엑슬릿(Xlet), 미들렛(Midlet)등이 존재한다. A Java application is a program that runs on a Java Virtual Machine using Java objects. Java applications include applets, Xlets, and middlelets.
- 애플릿(Applet)Applet
자바 애플릿이란 HTML 페이지에 포함되어 자바 호환(java-compatible) 웹 브라우저에 의해 실행될 수 있는 된 자바 프로그램으로, 자바 호환 웹 브라우저가 자바 애플릿이 포함된 HTML 페이지를 보여줄 때, 웹 서버쪽에 있는 자바 애플릿 코드를 다운로드 한 후 브라우저 내의 특정 영역에서 실행하게 된다. A Java applet is a Java program embedded in an HTML page that can be executed by a Java-compatible web browser. The Java applet code on the web server side when a Java-compatible web browser displays an HTML page containing a Java applet. After downloading it, it runs in a specific area within the browser.
애플릿은 웹 브라우져에서 수행되는 임베이디드 어플리케이션이다. 애플릿이 실행되고 있는 그 페이지에서 애플릿이 디스플레이되는 영역을 제공하기 때문에 애플릿은 자신을 포함하고 있는 웹 페이지와 밀접히 관련되어 있다.Applets are embedded applications that run in a web browser. The applet is closely related to the web page it contains because it provides the area where the applet is displayed on the page on which it is running.
애플릿 라이프-사이클의 네 가지 상태가 있는데, 로딩 상태(Loaded), 중지(Stopped), 시작(Started), 소멸(Destroyed)가 있다. 로딩 상태는 애플릿의 인스턴스가 생성되었지만 아직 초기화는 되지 않은 상태를 의미하고, 중지 상태는 애플릿이 초기화 되었지만 실행중이 아닌 상태이다. 시작은 애플릿이 활성화된 상태이며, 소멸은 애플릿이 종료되었고, 애플릿 인스턴스는 모든 자원을 반납하고 가비지 수 집에 의해 메모리가 회수되길 기다리는 상태를 의미한다.There are four states in the applet life-cycle: Loaded, Stopped, Started, and Destroyed. The loading state means that an applet instance has been created but not yet initialized, and the suspended state is that the applet has been initialized but not running. Startup means that the applet is active, and destruction means the applet is terminated, and the applet instance returns all resources and waits for garbage to be reclaimed by garbage collection.
- 미들렛(Midlet)Midlet
미들렛은 모바일 정보 장치 프로파일(Mobile Information Device Profile, MIDP) 어플리케이션이다. 미들렛은 애플릿과 달리 웹 브라우져에 의해 관리되는 것이 아니고, 양방향 페이져나 핸드폰에 탑재되는 어플리케이션을 제어하기 위해 특별히 만들어진 소프트웨어에 의해 관리된다. 어플리케이션이 실행되는 도중 전화가 온다면, 어플리케이션으로 인해 전화 수신이 방해받아서는 안될 것이다. 그러므로 이런 경우, 무선 기기에서 실행되는 어플리케이션의 경우 이러한 외부적인 관리가 적절하다. The middlelet is a Mobile Information Device Profile (MIDP) application. Unlike applets, middlelets are not managed by web browsers, but by software specifically designed to control applications loaded on interactive pages or mobile phones. If a call comes in while the application is running, the call should not be interrupted by the application. In this case, therefore, such external management is appropriate for applications running on the wireless device.
미들렛은 세가지의 상태를 가지는데, 중지(paused), 활성(active), 소멸(destroyed)가 있다. 미들렛에서는 애플릿의 로딩에 해당하는 상태가 없다. The middlelet has three states: paused, active, and destroyed. In the middlelet, there is no state corresponding to applet loading.
- 엑슬릿(Xlet)Xlet
엑슬릿은 본래 자바 TV API의 일부분이었으나, 개인 기초 프로파일(Personal Basis Profile, PBP)과 그 슈퍼셋인 개인 프로파일(Personal Profile, PP)에 의해 사용되고 있다. 소멸시에는 엑슬릿이 종료되며, 사용한 자원을 반납하고 가비지 수집되기를 기다리는 상태가 된다. Exlets were originally part of the Java TV API, but are used by the Personal Basis Profile (PBP) and its superset, the Personal Profile (PP). When destroyed, the exit is terminated, returning used resources and waiting to be garbage collected.
- 가비지 수집(Garbage Collection)Garbage Collection
가비지란 프로그램, 어플리케이션 등에 할당된 메모리 중 더 이상 사용하지 않는 부분을 의미한다. 예를 들어서, 어떤 객체에 메모리를 할당하였으나, 그 객체가 소멸한 경우에 해당 메모리를 유용한 메모리로 설정하지 않으면 이 메모리는 계 속 사용중인 것으로 나오게 된다. 따라서 사용하지 않으면서 사용할 수 없는 메모리를 가비지라 하고, 시스템에서는 이러한 가비지를 다시 유용한 메모리로 전환시키는 작업을 필요로 하는데, 이 작업을 가비지 수집, 혹은 가비지 컬렉션이라 한다.Garbage refers to a portion of memory allocated to a program or an application that is no longer used. For example, if a memory is allocated to an object but the object is destroyed, then the memory is kept in use unless the memory is set as useful. Therefore, memory that is not used and cannot be used is called garbage, and the system needs to convert such garbage back into useful memory, which is called garbage collection or garbage collection.
가비지 수집을 위해서는 크게 가비지임을 표시하는 단계와 가비지를 다시 유용한 메모리로 전환하는 단계로 구성된다.Garbage collection consists of largely indicating garbage and converting garbage back into useful memory.
자바 어플리케이션은 많은 시스템에 적용되고 있다. 이는 컴퓨터 시스템에, 또는 디지털 TV와 같은 전자제품에도 적용된다. 디지털 TV는 인터넷과 멀티미디어등이 결합한 것으로, 인터액티브 TV(Interactive TV)라고도 한다. 사용자와 상호작용하며, 또한 다양한 시스템의 적용을 위해 자바 어플리케이션은 컴퓨터, 디지털 TV, 휴대폰 등에 사용되며, 이들 제품에 적합하도록 자바 애플릿, 엑슬릿, 미들렛 등이 존재한다.Java applications are applied to many systems. This applies to computer systems or to electronics such as digital TVs. Digital TV is a combination of the Internet and multimedia, also known as Interactive TV. Java applications are used in computers, digital TVs, mobile phones, etc. to interact with users and to apply various systems. Java applets, exlets, middlelets, etc. are suitable for these products.
이들 자바 애플릿, 엑슬릿, 미들렛, 엑티브엑스 컨트롤 등은 적용 시스템에 따라 달라지며, 객체지향 어플리케이션을 구현하며, 다양한 전자 제품에서 사용자의 편의성과 상호 운용성을 높이고 있다. 본 명세서에서는 이들 중 엑슬릿을 중점으로 설명하게 되지만, 이는 본 발명의 일 실시예에 해당하며, 본 발명의 범위는 전술한 애플릿과 미들렛, 엑티브엑스 컨트롤 등을 포함하며 여러 전자 제품 혹은 디지털 장치에서 독립적으로 혹은 임베드 된 상태에서 실행되는 객체를 바탕으로 이루어진 객체지향 어플리케이션들을 대상으로 한다. 또한 코바(CORBA)의 객체 또는 컴포넌트, C++의 컨트롤, 혹은 컴포넌트들도 모두 상기의 객체지향 어플리케이 션의 예가 된다. 다만 본 명세서에서는 현재 디지털 TV에 다양하게 적용되는 자바 어플리케이션 중 특히 엑슬릿(Xlet)을 중점으로 설명하고자 한다.These Java applets, exlets, middlelets, and activeX controls vary depending on the application system, implement object-oriented applications, and improve user convenience and interoperability in various electronic products. In the present specification, it will be described with an emphasis on these, but this is an embodiment of the present invention, the scope of the present invention includes the above-described applet and the middlelet, activex control, etc. and various electronic products or digital devices It is targeted at object-oriented applications based on objects running independently or embedded in. In addition, objects or components in CORBA, controls or components in C ++ are all examples of such object-oriented applications. However, the present specification will focus on Xlets, particularly among Java applications currently applied to various digital TVs.
엑슬릿과 같은 어플리케이션의 동작을 살펴보면 다음과 같다.The behavior of an application such as an Xlet is as follows:
도 1은 본 발명의 일 실시예에 따른 엑슬릿의 동작 단계를 보여주는 블록도이다. 엑슬릿을 실행하기 위해서는 메모리로 로딩하는 과정(10)이 필요하다. 로딩된 후에 initXlet()에 의해 초기화가 되면 실행을 할 준비(20)가 된다. 메모리에 로딩된 엑슬릿은 엑슬릿을 구성하는 객체들이 메모리의 일정 부분을 차지함을 의미하며, 엑슬릿들은 자신의 객체들을 힙과 같은 데이터 구조를 통해 관리하고 있다. 초기화를 거친 엑슬릿은 아직 활성화가 되지 않으며 이를 실행시키기 위해서는 시작(30)해야 한다. 이는 초기화된 엑슬릿을 startXlet()을 통해 동작시킬 수 있다. 동작중인 엑슬릿은 잠시 중지시킬 수 있는데 이는 pauseXlet()을 통해 가능하다. 중지중인 엑슬릿은 동작을 멈춘 것일 뿐, 메모리를 점유하는 것에는 크게 변화가 없다. 시작(30)과 초기화(20)단계는 여러 번 바뀔 수 있다. 그러나 이 엑슬릿을 소멸(40)시킬 경우에는 더 이상 사용할 수 없다. 다시 사용하기 위해서는 로딩(10)단계를 거쳐야 한다.1 is a block diagram showing an operation step of an exlet according to an embodiment of the present invention. In order to execute the exlet, a process of loading into
그런데 이렇게 소멸한 엑슬릿은 자신이 점유한 메모리를 반환하여야 다른 엑슬릿 혹은 시스템이 해당 메모리를 사용할 수 있다. 엑슬릿이 점유한 메모리는 엑슬릿을 구성하는 객체들이 점유한 메모리를 포함한다. 과거 메모리 재사용을 위해 가비지 수집이 있어왔다. 가비지 수집을 위해서는 전체 메모리를 검사하여 사용 여부를 검토해야 한다. 또한 가비지 수집은 시스템에 따라 실시간으로 이루어질 수 있고 혹은 어느 정도의 시간이 지난후 이루어진다. 그러나 실시간에 의할 경우, 전체 메모리를 검사해야 한다는 부담 때문에 일정시간 간격을 두고 수행된다.However, this destroyed exlet must return the memory it occupies so that other exlets or the system can use the memory. The memory occupied by an exlet includes the memory occupied by the objects that make up the exlet. There has been garbage collection in the past for memory reuse. Garbage collection requires a full memory check to see if it is available. Garbage collection can also occur in real time, depending on the system, or after some time. However, in real time, it is performed at regular intervals due to the burden of checking the entire memory.
엑슬릿, 애플릿 혹은 C++ 컴포넌트가 멀티미디어 정보 혹은 사용자 편의성 등을 위해 디지털 TV, 휴대폰, 또는 컴퓨터 등에서 동작중일 경우, 잦은 로딩과 소멸이 일어날 수 있다. 그런데 이렇게 소멸된 엑슬릿, 애플릿 등의 어플리케이션을 구성하는 객체들의 메모리 점유가 일정기간 동안 유지될 경우 메모리 효율에 많은 문제점을 일으킬 수 있다. 이를 막기위해 가비지 수집을 실시간으로 하는 경우, 각각의 엑슬릿 혹은 애플릿이 소멸되는 때마다 전체 메모리를 검색하여 가비지 수집을 해야 하는데, 이는 시스템의 성능과 시간의 관점에서 비효율적이다.Frequently loading and destroying may occur when an exlet, applet, or C ++ component is running on a digital TV, mobile phone, or computer for multimedia information or user convenience. However, if the memory occupancy of the objects constituting the application such as an extlet or applet is maintained for a certain period of time, it may cause a lot of problems in memory efficiency. To prevent this, if garbage collection is done in real time, each time each exlet or applet is destroyed, the entire memory must be retrieved and garbage collected, which is inefficient in terms of system performance and time.
도 2는 종래의 메모리 관리자와 어플리케이션 관리자의 구성을 보여주는 블록도이다. 어플리케이션 관리자(140)는 어플리케이션의 생성과 초기화, 소멸 등을 담당한다. 어플리케이션은 전술한 바와 같이 객체 지향 어플리케이션을 의미하며, 엑슬릿, 애플릿, 미들릿, 또는 C++ 컴포넌트 등을 의미한다.2 is a block diagram showing the configuration of a conventional memory manager and application manager. The
메모리 관리자(120)는 객체가 생성될 경우 그 객체에 메모리를 할당한다. 가비지 수집을 수행하면서 소멸된 엑슬릿, 애플릿과 같은 어플리케이션에 소속된 객체들에게 할당된 메모리를 정리하여 유용한 메모리로 설정한다. 그러나, 이는 전술한 바와 같이 엑슬릿, 애플릿의 소멸과 맞물려 동적으로 일어나는 것이 아니라, 엑슬릿 등이 소멸하고 난 이후 일정 시간이 지난 후에 메모리 관리자가 가비지 수집을 독자적으로 진행하여 메모리 재사용이 가능하게 한다. 설혹 엑슬릿의 소멸시마다 가비지 수집을 한다고 해도, 전술한 시간상, 성능상의 문제점이 발생한다.The
따라서 엑슬릿 등의 소멸 이후 메모리를 재활용 하기 위해서는 전체 메모리를 검색해야 하는 어려움이 존재하며, 또한, 빈번한 검색을 피하기 위해 일정 기간 이후 가비지 수집을 할 경우 사용하지 않으면서 다른 객체 등에 의해 사용할 수 없는 메모리가 존재하게 된다. 따라서, 사용하지 않는 메모리, 즉 가비지로 인해 시스템의 성능에 영향을 미칠 수 있다. 특히 잦은 어플리케이션의 실행과 소멸이 잦은 디지털 장치에서는 이러한 가비지 메모리의 존재가 시스템의 성능 전체를 하락시킬 수 있다.Therefore, there is a difficulty to search the entire memory in order to recycle the memory after the destruction of the exlet, etc. Also, in order to avoid frequent searches, if the garbage collection is performed after a certain period of time, the memory cannot be used by other objects without being used. Will be present. Thus, unused memory, or garbage, can affect system performance. Particularly in digital devices with frequent execution and destruction of applications, the presence of such garbage memory can degrade the overall performance of the system.
도 3은 종래 기술에 따른 엑슬릿이 메모리에 할당되어 소멸되는 과정을 보여주는 예시도이다.3 is an exemplary view illustrating a process in which an exlet according to the prior art is allocated to a memory and then destroyed.
도 3의 (a)는 엑슬릿 A가 로딩된 경우를 보여준다. 로딩 단계에서 엑슬릿 A에 포함되는 객체들이 힙을 구성한다. 그리고 이들 엑슬릿 A가 메모리에 로딩되어 공통 메모리 영역에 대한 자원에 접근할 경우 그 공통 메모리 영역의 메모리도 힙을 구성할 수 있다. 메모리의 일정 부분을 차지하면서 엑슬릿 A는 활성화되어 동작하거나 중지할 수 있다. 엑슬릿 B 역시 마찬가지이다. 여기서 엑슬릿 A와 엑슬릿 B는 동일한 힙(Heap) 영역을 사용하게 되며 엑슬릿 A와 엑슬릿 B가 차지하는 메모리 영역에 구분은 없다.Figure 3 (a) shows a case in which the excit A is loaded. In the loading phase, the objects contained in Xlet A make up the heap. And when these exlets A are loaded into memory to access resources for a common memory area, the memory of the common memory area may also constitute a heap. While occupying a portion of memory, exit A can be activated and stopped. The same applies to exit B. Here, Axle A and Axle B use the same heap area, and there is no distinction between the memory areas occupied by Axle A and Axle B.
(b)는 엑슬릿 A가 소멸한 경우를 보여준다. 엑슬릿은 소멸하여 더 이상 사용할 수 없지만, 엑슬릿 A를 구성한 객체들이 차지했던 메모리 영역은 그대로 존재한다. 따라서 이 영역은 새로이 다른 객체 또는 엑슬릿, 혹은 시스템이 사용할 수 없다. 물론 이 메모리 영역을 사용하기 위해 (c)단계에서 가비지 수집을 수행하면 상 기 메모리 영역(81)은 다시 다른 시스템 혹은 엑슬릿이 사용할 수 있다. 그러나 (c) 단계에서 메모리 수집을 하기 위해서는 전체 메모리 힙에 대해 검색을 하여 어떤 메모리가 사용중인지 아닌지를 검토하여 가용 메모리로 전환하여야 하므로, 현재 사용중인 메모리 부분까지도 검색해야 하는 불편함이 있다.(b) shows the case where Exlet A is destroyed. Exlets are destroyed and can no longer be used, but the memory area occupied by the objects that make up Exlet A remains intact. As a result, this area is not available to any new objects or exits or systems. Of course, if garbage collection is performed in step (c) to use the memory area, the
또한 (b)와 (c) 단계 사이에 시간이 길어지면 가용할 수 있는 메모리의 양이 줄어든다. 따라서 엑슬릿과 같이 메모리에 로딩되는 단위를 기준으로 메모리에 할당하고, 소멸시켜서 전체 메모리의 검색을 줄이면서 메모리를 재활용하는 방법 및 장치가 필요하다.In addition, longer time between steps (b) and (c) reduces the amount of available memory. Therefore, there is a need for a method and apparatus for allocating memory to a memory unit based on a unit loaded in the memory, such as an exlet, and destroying the memory while reducing the search of the entire memory.
도 3의 (a), (b), (c)는 메모리 공간 내에서 특정 엑슬릿을 구성하는 객체들을 가시적으로 정렬해서 보여주고 있다. 그러나 이는 반드시 물리적으로 분류되는 것은 아니며, 물리적으로는 혼재해 있어도 가시적으로 연결지을 수 있다.(A), (b), and (c) of FIG. 3 show objects visually aligned in a memory space. However, it is not necessarily classified physically, but can be visually linked even when physically mixed.
도 4는 본 발명의 일 실시예에 따른 메모리 관리자(120)와 어플리케이션 관리자(140)와의 상호 작용을 보여주는 구성도이다.4 is a diagram illustrating an interaction between the
어플리케이션 관리자(140)는 엑슬릿, 애플릿과 같은 어플리케이션의 생성, 소멸을 담당하며 메모리 관리자(120)는 객체에 메모리를 할당하는 작업을 수행한다. 메모리 관리자(120)는 객체에 메모리를 할당하기 전에 해당 객체가 어떤 엑슬릿 혹은 애플릿에 소속된 객체인지를 어플리케이션 관리자(140)에게 문의한다. 어플리케이션 관리자(140)로부터 해당 객체의 소유자인 엑슬릿 또는 애플릿과 같은 어플리케이션을 알게 되면, 그 어플리케이션(예를 들어 엑슬릿)에 할당된 메모리 영역(예를 들어 메모리 힙)에 상기 객체의 메모리를 할당한다. 이렇게 엑슬릿 단 위, 혹은 컴포넌트나 애플릿 등 어플리케이션 단위로 서브힙(Sub Heap)을 생성하여 관리하면 해당 엑슬릿 혹은 컴포넌트가 소멸할 경우 이들 어플리케이션을 구성하는 객체들이 점유하는 메모리 영역을 회수하여 재사용할 수 있다. 상기 서브힙을 사용하는 것은 일 실시예이며, 이외에도 메모리를 특정 어플리케이션들에 소속된 객체를 추적할 수 있도록 구성할 수 있다. 이는 물리적 구성으로 특정 메모리 영역을 나눌 수도 있지만, 논리적 구성을 통해, 물리적으로 분산된 객체들이라도 논리적인 영역 내에 같이 존재하도록 구성할 수 있다. 이는 위의 예에서 살펴본 서브힙 외에도, 링크 리스트(Linked List), 여러가지 트리들, 즉 이진 트리(Binary tree) 또는 B-트리(B-tree)등이 될 수도 있다. 물론 해쉬 테이블을 이용한 구성도 가능하며, 이러한 연결 고리가 아닌, 각 객체들의 위치 정보를 저장한 작은 테이블을 구성하여 이루어 질 수도 있다. 이러한 구현은 해당 시스템 또는 어플리케이션의 특성에 따라 달라질 수 있고, 해당 시스템에 최적의 구조를 선택하여 메모리를 관리할 수 있다. 어플리케이션 관리자(140)는 엑슬릿 관리자, 애플릿 관리자 혹은 컴포넌트 관리자가 될 수 있다.The
도 5는 본 발명의 일 실시예에 따른 객체에 메모리를 할당하는 과정을 보여주는 순서도이다.5 is a flowchart illustrating a process of allocating a memory to an object according to an embodiment of the present invention.
메모리 관리자(140)는 객체에 메모리를 할당할 것을 요청받는다(S102). 상기 요청을 수신한 메모리 관리자(140)는 상기 객체가 어떤 어플리케이션(엑슬릿, 애플릿, 컴포넌트 등)의 소유인지를 어플리케이션 관리자에게 문의한다(S104). 상기 문의를 받은 어플리케이션 관리자는 해당 어플리케이션(엑슬릿, 애플릿, 컴포넌트 등 )에 대한 정보를 메모리 관리자(140)에게 보낸다. 객체가 어떤 어플리케이션을 구성하는가에 대한 정보를 수신한 메모리 관리자(140)는 상기 어플리케이션을 구성하는 객체들에게 할당된 서브힙에 상기 요청받은 객체의 메모리를 할당한다(S106). 이들 과정을 통해 엑슬릿이 소유하는 객체는 동일한 서브힙에 저장된다.The
특정 메모리 영역, 즉 위의 예에서 서브힙에 객체를 할당한다는 것은 객체에 임의의 메모리를 할당하고, 그 메모리 위치 정보를 서브힙과 연결시키는 것을 의미할 수 있다. 이는 물리적으로 혼재되어도 논리적으로 연결되어 있는 일 실시예를 의미한다. 또한 특정 어플리케이션에 대해 물리적으로 구별되는 메모리 영역을 할당할 수도 있다. 이는 물리적으로도 하나의 어플리케이션을 구성하는 객체들이 군집하여 저장되는 것을 의미한다. 본 명세서에서 메모리 영역을 할당하는 것은 상기의 물리적 또는 논리적 연결을 모두 의미한다.Allocating an object to a specific memory area, that is, the sub heap in the above example, may mean allocating arbitrary memory to the object and associating the memory location information with the sub heap. This means one embodiment that is physically mixed but logically connected. You can also allocate physically distinct memory regions for specific applications. This means that objects constituting an application are stored in a cluster. Allocating a memory area in this specification means both the above physical or logical connections.
도 5는 어플리케이션별로, 다시 말해서 엑슬릿이나 애플릿 별로 객체를 서브힙을 구성하여 추후 엑슬릿, 또는 애플릿과 같은 어플리케이션이 소멸할 때, 해당 객체를 쉽게 추적하여 메모리를 가용할 수 있게 한다. 서브힙을 사용하는 것은 일 실시예이며, 서브힙이 아닌 링크 리스트 또는 트리 등의 여러 데이터 구조를 이용할 수 있다.FIG. 5 configures a sub-heap of an object for each application, that is, for each of an exlet or an applet, so that when an application such as an exlet or an applet is later destroyed, the object can be easily tracked to use memory. Using a subheap is an embodiment, and various data structures such as a link list or a tree may be used instead of the subheap.
도 6은 본 발명의 일 실시예에 따른 어플리케이션이 소멸할 경우 메모리를 회수하는 과정을 보여주는 순서도이다. 어플리케이션 관리자가 어플리케이션 A를 종료시킨다(S122). 엑슬릿, 애플릿 등이 소멸되는 경우에 발생할 수 있는 상황이다. 종료와 더불어 어플리케이션 관리자는 엑슬릿, 애플릿과 같은 어플리케이션 A 가 제거하지 않은 리소스 제거 작업을 수행하면서(S124), 상기 어플리케이션 A가 차지한 메모리 영역을 회수할 것을 메모리 관리자에게 요청한다(S126). 메모리 관리자는 상기 어플리케이션 A에게 할당되었던 메모리 영역인 서브힙을 검토하여, 어느 메모리 영역을 어플리케이션 A가 차지하고 있는지에 대한 정보를 얻게 된다(S127). 메모리 관리자는 상기 검토를 통해 서브힙으로 구성한 어플리케이션 A의 메모리 영역 전체를 회수하고 이를 초기화한다(S128). 상기 메모리 회수를 통해 어플리케이션 A 소멸 과정이 완료하면 원래의 실행 흐름으로 복귀한다(S130).6 is a flowchart illustrating a process of recovering a memory when an application is destroyed according to an embodiment of the present invention. The application manager terminates the application A (S122). This can happen if an exit or applet is destroyed. In addition to the termination, the application manager requests the memory manager to recover the memory area occupied by the application A while performing a resource removal operation that is not removed by the application A such as an axlet or an applet (S126). The memory manager examines the sub-heap that is the memory area allocated to the application A, and obtains information on which memory area the application A occupies (S127). The memory manager retrieves the entire memory area of the application A configured as the sub heap through the review and initializes it (S128). When the application A destruction process is completed through the memory recovery, the process returns to the original execution flow (S130).
도 6에서의 어플리케이션은 엑슬릿, 애플릿, 미들릿, C++ 컴포넌트와 같은 객체 지향 어플리케이션이며, 상기 서브힙은 어플리케이션 별로 할당된 객체들을 쉽게 추적하기 위한 일실시예이다.The application in FIG. 6 is an object oriented application such as an Xlet, an applet, a middlelet, a C ++ component, and the subheap is an embodiment for easily tracking the objects allocated for each application.
도 7 내지 9는 전술한 도 5와 6에서 특정 어플리케이션을 구성하거나 시스템을 통해 공유된 객체들이 메모리 서브 힙을 구성하면서 메모리를 할당받고, 상기 어플리케이션이 소멸할 경우 다시 메모리를 회수하는 과정을 보여주는 블록도이다. 도 7 내지 9에서는 엑슬릿을 어플리케이션의 일실시예로 하며, 어플리케이션을 구성하는 객체들은 서브힙을 통해 메모리를 구성하고 추후 어플리케이션별로 객체를 추적할 수 있게 한다. 서브힙 이외에도 링크 리스트를 통해서도 메모리를 구성할 수 있으며, 또한 트리 구조를 이용해서도 어플리케이션 별로 객체를 메모리에 할당할 수 있음은 전술하였다.7 to 9 are block diagrams illustrating a process of recovering a memory when an object constituting a specific application or shared objects through the system is allocated memory while constituting a memory sub heap in FIGS. 5 and 6, and the application is destroyed. It is also. In FIGS. 7 to 9, an exlet is an embodiment of an application, and objects constituting the application configure a memory through a sub-heap and track an object later by application. In addition to the sub-heap, the memory can be configured through the link list, and the object can be allocated to the memory for each application by using the tree structure.
도 7은 본 발명의 일 실시예에 따른 객체 할당을 보여주는 예시도이다. 도 5의 과정에 의해 객체에 메모리를 할당하고 있다. 81, 82, 83은 각각 엑슬릿 A, 엑 슬릿 B, 엑슬릿 C의 메모리 영역이다. 84는 시스템의 객체들, 즉 공통 메모리 영역을 의미한다. 메모리 관리자가 각 엑슬릿이 소유하는 객체들을 해당 서브힙에 할당하므로 엑슬릿간의 메모리 구획은 논리적으로 또는 물리적으로 나뉘어진다. 91과 92는 엑슬릿 A가 외부 리소스 혹은 공유 리소스를 사용하는 것을 의미한다. 7 is an exemplary view showing object allocation according to an embodiment of the present invention. Memory is allocated to the object by the process of FIG. 81, 82, and 83 are memory areas of the exit A, the exit B, and the exit C, respectively. 84 denotes objects of a system, that is, a common memory area. The memory manager allocates the objects owned by each exlet to the corresponding subheap, so the memory partitions between the exlets are divided logically or physically. 91 and 92 mean that Alet uses external or shared resources.
도 7에서는 가시적으로 메모리 공간이 나뉘어지지만, 실제 메모리 공간을 엑슬릿이나 애플릿등의 어플리케이션별로 나뉘어지는 것만을 의미하지는 않는다. 즉, 논리적으로 구별가능하도록 구성될 수도 있고, 실제 물리적으로 나누어져 어플리케이션별로 저장될 수 있다. 실제 메모리내에서는 객체들이 엑슬릿과 무관하게 혼재되어 있을 수도 있다. 다만 이들 객체들은 엑슬릿 별로 추적이 가능하게 별도의 링크나 힙을 구성할 수 있다. 데이터 구조에서 링크나 힙은 메모리의 물리적 주소에 의해 한계지어지는 것이 아니라 논리적으로 연결되어 구조화 된 것을 의미한다. Although the memory space is visually divided in FIG. 7, it does not mean that the actual memory space is divided by application such as an exlet or an applet. That is, it may be configured to be logically distinguishable, or may be actually divided and stored for each application. In real memory, objects may be mixed regardless of the exit. However, these objects can form a separate link or heap so that they can be tracked by each exit. In data structures, links or heaps are logically linked and structured, not limited by physical addresses in memory.
도 8은 본 발명의 일 실시예에 따른 리소스 제거를 보여주는 예시도이다. 도 6의 S122, S124 단계에 해당한다. 엑슬릿 A가 시스템 영역의 객체를 사용하는 경우 외부 리소스의 사용을 제거한다. 이는 도 7의 91, 92의 제거를 통해 이루어진다. 그러나 엑슬릿 A의 메모리 영역은 그대로 서브힙의 형태로 존재한다.8 is an exemplary view illustrating resource removal according to an embodiment of the present invention. It corresponds to steps S122 and S124 of FIG. 6. If Xlet A uses objects in the system area, it eliminates the use of external resources. This is done through the removal of 91, 92 of FIG. However, the memory area of Xlet A is in the form of a sub heap.
도 9는 본 발명의 일 실시예에 따른 메모리 영역의 회수를 보여주는 예시도이다. 도 7과 8에서 살펴본 것처럼, 엑슬릿 혹은 애플릿 단위로 서브힙을 구성한다. 그리고 그 서브힙에 대한 정보를 메모리 관리자가 가지고 있다. 따라서 엑슬릿 A의 객체들의 메모리 영역은 서브힙을 추적하여 알 수 있고, 이 서브힙을 구성하는 메모리를 가용 메모리로 전환함으로써, 가비지를 없앨 수 있다.9 is an exemplary diagram illustrating the number of memory areas according to an embodiment of the present invention. As shown in FIGS. 7 and 8, the subheap is configured in an exlet or applet unit. And the memory manager keeps information about the subheap. Therefore, the memory area of the objects of the exlet A can be known by tracking the sub heap, and the memory constituting the sub heap can be converted into the available memory, thereby eliminating garbage.
도 10은 본 발명의 일 실시예에 따른 메모리 관리자와 메모리의 구성을 보여주는 블록도이다.10 is a block diagram illustrating a configuration of a memory manager and a memory according to an embodiment of the present invention.
메모리 관리자는 크게 어플리케이션 메모리 관리부와 메모리 할당 관리부, 그리고 객체 정보 수신부로 이루어진다. The memory manager is largely comprised of an application memory manager, a memory allocation manager, and an object information receiver.
어플리케이션 메모리 관리부(122)는 어플리케이션과 이 어플리케이션을 구성하는 해당하는 객체들이 차지하는 메모리 서브힙에 대한 포인터로 구성된다. 포인터는 메모리의 위치 정보를 의미한다. 이 정보를 통해 특정 어플리케이션을 구성하는 객체에 메모리 할당할 때, 상기 어플리케이션 메모리 관리부는 어떤 객체가 어느 메모리 위치에 저장되는지를 추적할 수 있게 하는 정보를 저장하게 된다. 앞서 살펴본 바와 같이 이러한 정보는 서브힙을 구성하거나 링크를 이용하는 방식등을 통해 가능하다. 이러한 작업과 함께, 또는 이러한 작업이 이루어지기 전 또는 후에 객체가 필요로 하는 메모리를 할당할 수 있다. 그리고 상기 어플리케이션이 소멸할 경우, 그 어플리케이션 내의 객체들은 어플리케이션 메모리 관리부(122)의 정보에 따라 상기 객체들에 할당된 메모리를 가용 메모리로 전환하여 가비지 수집이 가능하게 한다. 상기 어플리케이션 메모리 관리부(122)는 전술한 바와 같이 엑슬릿, 애플릿 등의 어플리케이션에 포함되는 객체들과 시스템에서 여러 어플리케이션에 의해 공유되는 객체들의 메모리를 어플리케이션별로, 또는 시스템별로 관리하는 기능을 한다.The
메모리 할당 관리부(124)는 메모리를 할당하고 가비지를 수집한다. 객체 정보 수신부(126)를 통해 객체의 할당을 요청받으면, 할당하고자 하는 객체가 어떤 어플리케이션(엑슬릿, 애플릿 등)에 소속되는지를 검토하여 어플리케이션 메모리 관리부(122)에 저장된 해당 어플리케이션의 객체들이 점유하는 메모리 서브힙을 알아내어 객체를 할당한다. 또한 자바 가상 머신에서 가비지 수집을 명령하면 미사용이며 점유중인 메모리를 가용 메모리로 전환한다. 메모리 할당 관리부(124)는 소멸한 엑슬릿이 가리키는 서브힙의 메모리가 가비지이므로, 이들을 수집하여 가용메모리로 전환할 수 있다. The
객체 정보 수신부(126)는 엑슬릿 관리자 혹은 애플릿 관리자와 같이 어플리케이션의 생성과 소멸을 책임지는 어플리케이션 관리자와 상호작용을 하는 부분이다. 어플리케이션을 구성하는 객체의 생성에 따른 메모리 할당을 요구받으면 객체 정보 수신부(126)는 해당 객체가 어떤 엑슬릿 혹은 어떤 애플릿의 소유인지를 문의하게 된다. 이러한 정보의 교환을 수행하는 부분이 객체 정보부이다. The object
상기의 메모리 관리자, 즉 메모리 관리 장치는 자바, 코바, C++ 등 객체지향 어플리케이션이 구동되는 모든 디지털 장치에 포함된다. 특히 최근 디지털 TV에 있어서 엑슬릿과 같은 객체지향 어플리케이션의 필요성이 높아지면서 상기의 메모리 관리자는 디지털 장치의 리소스를 효율적으로 관리할 수 있다.The memory manager, that is, the memory management device, is included in all digital devices on which object-oriented applications such as Java, COVA, and C ++ run. In particular, with the recent increase in the need for object-oriented applications such as exlets in digital TV, the memory manager can efficiently manage the resources of the digital device.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구 의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Those skilled in the art will appreciate that the present invention can be embodied in other specific forms without changing the technical spirit or essential features of the present invention. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive. The scope of the present invention is indicated by the scope of the following claims rather than the above description, and all changes or modifications derived from the meaning and scope of the claims and their equivalents are included in the scope of the present invention. Should be interpreted.
본 발명을 구현함으로써 객체지향 프로그램의 실행시 메모리 관리의 효율을 증대시킬 수 있다.By implementing the present invention, it is possible to increase the efficiency of memory management when executing an object-oriented program.
본 발명을 구현함으로써 객체의 메모리를 할당함에 있어 어플리케이션 단위로 하여 메모리의 재사용율을 높일 수 있다.By implementing the present invention, it is possible to increase the reuse rate of memory in application units in allocating memory of objects.
Claims (17)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/189,743 US20060026379A1 (en) | 2004-07-27 | 2005-07-27 | Effective memory management method and device in object-oriented application |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020040058710 | 2004-07-27 | ||
KR20040058710 | 2004-07-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20060010679A KR20060010679A (en) | 2006-02-02 |
KR100631782B1 true KR100631782B1 (en) | 2006-10-11 |
Family
ID=37120961
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020040070939A KR100631782B1 (en) | 2004-07-27 | 2004-09-06 | Efficient Memory Management Method and Device in Object-Oriented Application |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR100631782B1 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100703810B1 (en) * | 2006-02-09 | 2007-04-09 | 삼성전자주식회사 | Apparatus and method for native memory management on java environment |
US9558040B2 (en) * | 2011-06-20 | 2017-01-31 | Microsoft Technology Licensing, Llc | Memory manager with enhanced application metadata |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829013A (en) | 1995-12-26 | 1998-10-27 | Intel Corporation | Memory manager to allow non-volatile memory to be used to supplement main memory |
US6526421B1 (en) | 1999-03-31 | 2003-02-25 | Koninklijke Philips Electronics N.V. | Method of scheduling garbage collection |
US20030187888A1 (en) | 2000-03-28 | 2003-10-02 | Andrew Hayward | Garbage collection |
-
2004
- 2004-09-06 KR KR1020040070939A patent/KR100631782B1/en not_active IP Right Cessation
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5829013A (en) | 1995-12-26 | 1998-10-27 | Intel Corporation | Memory manager to allow non-volatile memory to be used to supplement main memory |
US6526421B1 (en) | 1999-03-31 | 2003-02-25 | Koninklijke Philips Electronics N.V. | Method of scheduling garbage collection |
US20030187888A1 (en) | 2000-03-28 | 2003-10-02 | Andrew Hayward | Garbage collection |
Non-Patent Citations (2)
Title |
---|
1020030056936 * |
1020040070939 - 643416 * |
Also Published As
Publication number | Publication date |
---|---|
KR20060010679A (en) | 2006-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9189263B1 (en) | Object synchronization in shared object space | |
CN100580633C (en) | A method of maintaining applications in a computing device | |
JP2583014B2 (en) | Method and system for managing an environment with a data processing system | |
CN101595460B (en) | Implementation for collecting unmanaged memory | |
US6714968B1 (en) | Method and system for seamless access to a remote storage server utilizing multiple access interfaces executing on the remote server | |
US6463565B1 (en) | Method for designing object-oriented table driven state machines | |
Hartman et al. | Joust: A platform for liquid software | |
US7840967B1 (en) | Sharing data among isolated applications | |
US7543301B2 (en) | Shared queues in shared object space | |
JP2001503891A (en) | Information device architecture | |
US20020049719A1 (en) | Application execution apparatus and method | |
US20040019887A1 (en) | Method, system, and program for loading program components | |
JP2014059906A (en) | Method and apparatus for implementing individual class loader | |
JP2001527237A (en) | Collection of unnecessary information | |
JPH08272725A (en) | System and method for judgment and operation of constituent conformation of server in distributed object environment | |
US6804761B1 (en) | Memory allocation system and method | |
JP4000327B2 (en) | System and method for inducing asynchronous behavior changes to managed application processes | |
CN111273968A (en) | Object calling method, device, equipment and medium | |
US20070203959A1 (en) | Apparatus and method for managing resources using virtual ID in multiple Java application environment | |
US7376758B2 (en) | I/O dependency graphs | |
US20060026379A1 (en) | Effective memory management method and device in object-oriented application | |
US7043726B2 (en) | Binding of processes in network systems | |
US6829761B1 (en) | Method and apparatus for managing shared memory in a run-time environment | |
US7676810B2 (en) | Identification of execution context | |
EP1351142A2 (en) | Apparatus and method of lazy connection transaction enlistment |
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: 20120830 Year of fee payment: 7 |
|
FPAY | Annual fee payment |
Payment date: 20130829 Year of fee payment: 8 |
|
FPAY | Annual fee payment |
Payment date: 20140828 Year of fee payment: 9 |
|
FPAY | Annual fee payment |
Payment date: 20150828 Year of fee payment: 10 |
|
LAPS | Lapse due to unpaid annual fee |