KR101494328B1 - 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법 - Google Patents

힙 분석을 이용한 메모리 누수 탐지 장치 및 방법 Download PDF

Info

Publication number
KR101494328B1
KR101494328B1 KR20130075960A KR20130075960A KR101494328B1 KR 101494328 B1 KR101494328 B1 KR 101494328B1 KR 20130075960 A KR20130075960 A KR 20130075960A KR 20130075960 A KR20130075960 A KR 20130075960A KR 101494328 B1 KR101494328 B1 KR 101494328B1
Authority
KR
South Korea
Prior art keywords
heap
objects
parent
class
information
Prior art date
Application number
KR20130075960A
Other languages
English (en)
Other versions
KR20150002300A (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 KR20130075960A priority Critical patent/KR101494328B1/ko
Publication of KR20150002300A publication Critical patent/KR20150002300A/ko
Application granted granted Critical
Publication of KR101494328B1 publication Critical patent/KR101494328B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 프로그램이 힙 공간을 사용하는 패턴을 분석함으로써 메모리 누수를 탐지하고 있는 기존의 메모리 누수 탐지 방법을 한 번의 스냅숏만을 활용하면서 동시에 객체지향 프로그램의 다형성을 고려하여 메모리 누수 현상의 발생에 대한 탐지를 수행하는 장치 및 방법을 제공하기 위한 것으로서, 실행 중인 프로그램의 힙에 대한 정보를 추출하는 물리적 힙정보 추출부과, 상기 물리적 힙정보 추출부에서 추출된 힙에 대한 정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별하는 객체 분석부와, 객체지향 언어의 다형성을 고려하기 위해 상기 선별된 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들을 선별하는 객체 비교부와, 상기 객체 분석부에서 선별된 객체들을 기반으로 상기 공통적인 상위(부모) 클래스를 갖는 객체수가 미리 정의되어 있는 제 1 임계값보다 크거나, 또는 상기 선별된 동일한 객체수가 미리 정의되어 있는 제 2 임계값보다 크면 메모리 누수 발생으로 판단하는 메모리 누수 판단부를 포함하여 구성된다.

Description

힙 분석을 이용한 메모리 누수 탐지 장치 및 방법{Apparatus and Method for Detecting Memory Leak using Heap Analysis}
본 발명은 메모리 누수 현상에 대한 자동적인 탐지에 관한 것으로, 특히 가비지(garbage) 수집 방식으로 메모리를 관리하는 시스템에서 심각한 문제로 인식되는 메모리 누수 현상을 힙 분석을 이용하여 메모리 누수 현상의 발생에 대한 탐지를 수행하는 장치 및 방법에 관한 것이다.
힙(heap)은 프로그램에서 필요한 변수를 동적으로 할당/회수할 때 활용되는 메모리 영역을 일컫는 말이다. 특히 Java 언어와 같은 가상 머신을 사용하는 시스템뿐만 아니라, C++ 프로그램에서도 대부분의 객체들은 힙 영역에 할당된다.
메모리 누수는 동적으로 할당된 객체들이 더 이상 활용될 필요가 없음에도 불구하고 계속해서 힙 영역을 점유하고 있는 문제를 말한다. 특히 프로그램에서 힙에 객체를 할당하는 코드가 수행된 후에 할당된 객체를 회수하는 코드가 수행되지 않은 채 다시 객체를 할당하는 코드가 수행되면 기존 할당된 객체의 공간은 실제로 사용되지 않으면서 계속해서 힙을 점유하게 된다.
Java 등의 가상 기계 기반 언어에서는 이와 같은 가비지를 관리하기 위하여 가상 기계가 자체적으로 가비지를 수집하여 가비지를 가용 메모리 공간으로 확보한다. 즉, 가비지 수집기(garbage collector)는 프로그램이 수행될 때 백그라운드에서 자동적으로 수행하면서 프로그램에서 할당된 메모리 중에서 더 이상 사용하지 않는 메모리 공간을 회수함으로써 가비지가 지속적으로 발생하여 시스템의 성능을 저하시키는 상황을 예방한다.
그러나 프로그램을 잘못 작성하게 되면 가비지 수집기에 의해서 회수되지 않은 사용되지 않은 메모리 공간이 발생할 수가 있다. 이는 가비지 수집기가 할당된 메모리 공간에 대한 참조(reference)가 없으면 사용되지 않는 공간으로 간주하기 때문이다. 즉, 프로그램에서는 실제로 사용하지 않는 메모리 공간임에도 불구하고 그 메모리 공간에 대한 참조가 유지되는 경우가 있어, 이런 경우 해당 공간은 가비지 수집기에 의해서 회수되지 않는다.
이를 해소하기 위해, 메모리 누수의 발생 여부를 탐지하기 위한 방법으로 프로그램이 힙 공간을 사용하는 패턴을 분석함으로써 메모리 누수를 탐지하고 있으며, 일반적으로 다음과 같은 3가지 방법으로 메모리 누수를 탐지한다.
첫 번째 방법으로 오랜시간 동안 사용되지 않은 객체를 누수로 판단한다. 즉, 힙에 할당된 객체들 중에서 오랜시간 동안 읽기/쓰기(read/write) 되지 않은 객체는 할당된 후에 프로그램에서 실제로는 사용되지 않는 것으로 간주하고 이를 누수 객체로 판단한다.
두 번째 방법으로 크기가 증가하는 객체를 누수로 판단한다. 즉, 누수는 특히 ArrayList, LinkedList와 같은 수집(collection) 객체에 지속적으로 새로운 객체들이 추가될 때 대표적으로 발생한다. 이 방법에서는 수집 객체의 크기 증가하는 경우 누수가 있는 것으로 판단한다.
마지막 세 번째 방법으로 많은 수의 동일 객체가 발견되는 경우 누수로 판단한다. 즉, 누수는 객체가 할당된 후에 회수되지 않고 새로운 객체가 할당되는 경우 발생한다. 이 방법에서는 힙에 동일한 객체가 많이 발견되는 경우 해당 객체가 누수되고 있다고 판단한다.
그러나 기존의 메모리 누수 탐지 방법 중 첫 번째 방법 및 두 번째 방법은 힙에 대한 정보를 최소 2회 이상 필요로 한다. 즉, 2번 이상의 힙에 대한 스냅숏(snapshot)이 존재해야만 상기 첫 번째 방법 및 두 번째 방법을 적용할 수가 있다.
예를 들어, 프로그램을 시작시킨 후에 연속적으로 스냅숏을 구할 때 이를 S1, S2라고 각각 부르면, 첫 번째 방법에서 상기 S1은 use/write된 객체이고, 상기 S2는 use/write가 되지 않으면, 해당 객체를 누수로 간주한다. 따라서 이러한 문제를 해결하기 위해 S1, S2인 2회가 아니라 보다 많은 수의 스냅숏이 실제로 필요하게 된다. 마찬가지로 두 번째 방법에서 S1, S2 등의 스냅숏에서 계속해서 객체의 수가 증가하면 해당 객체가 누수되는 것으로 간주한다.
한편, 세 번째 방법은 한 번의 스냅숏만으로 분석이 가능하다. 즉, 하나의 스냅숏을 분석해서 동일한 객체가 많이 해당 스냅숏에서 발견되면 해당 객체가 누수되고 있다고 판단한다. 그러나 이는 Java, C++ 등과 같은 객체지향 언어의 다형성(Polymorphism)을 고려하지 않은 방식이다. 다시 말하면, 클래스 C의 객체 o가 여러 개 발견되는 경우도 누수로 간주될 수 있지만, 다양성의 특성에 따르면 프로그램의 입력값 및 상황에 따라서 클래스 C의 객체 대신에 클래스 C의 자손클래스의 객체 p가 할당되고 사용될 수 있다. 따라서 클래스 C의 객체가 많은 경우만이 아니라 클래스 C의 자손클래스들의 객체가 많은 경우에도 누수라 판단할 필요가 있다.
따라서 본 발명은 상기와 같은 문제점을 해결하기 위해 안출한 것으로서, 프로그램이 힙 공간을 사용하는 패턴을 분석함으로써 메모리 누수를 탐지하고 있는 기존의 메모리 누수 탐지 방법을 한 번의 스냅숏만을 활용하면서 동시에 객체지향 프로그램의 다형성을 고려하여 메모리 누수 현상의 발생에 대한 탐지를 수행하는 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 다른 목적들은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 힙 분석을 이용한 메모리 누수 탐지 장치의 특징은 실행 중인 프로그램의 힙에 대한 정보를 추출하는 물리적 힙정보 추출부과, 상기 물리적 힙정보 추출부에서 추출된 힙에 대한 정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별하는 객체 분석부와, 객체지향 언어의 다형성을 고려하기 위해 상기 선별된 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들을 선별하는 객체 비교부와, 상기 객체 분석부에서 선별된 객체들을 기반으로 상기 공통적인 상위(부모) 클래스를 갖는 객체수가 미리 정의되어 있는 제 1 임계값보다 크거나, 또는 상기 선별된 동일한 객체수가 미리 정의되어 있는 제 2 임계값보다 크면 메모리 누수 발생으로 판단하는 메모리 누수 판단부를 포함하여 구성된다.
바람직하게 상기 힙에 대한 정보는 1회의 힙에 대한 스냅숏인 것을 특징으로 한다.
바람직하게 상기 물리적 힙정보 추출부는 주기적으로 실행을 하거나, 또는 물리적 힙 영역의 변화 시 수행하여 힙에 대한 정보를 추출하는 것을 특징으로 한다.
바람직하게 상기 제 1 임계값은 상기 제 2 임계값과 동일하거나 더 큰 값을 갖는 것을 특징으로 한다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 힙 분석을 이용한 메모리 누수 탐지 방법의 특징은 (A) 실행 중인 프로그램의 힙에 대한 정보를 추출하는 단계와, (B) 상기 추출된 힙정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별하는 단계와, (C) 상기 선별된 객체들 중 객체지향 언어의 다형성을 고려하기 위하여 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들이 있는지 검색하는 단계와, (D) 상기 검색 결과, 공통적인 상위(부모) 클래스를 갖는 객체들이 있는 경우, 상기 검색된 공통적인 상위(부모) 클래스를 갖는 객체수를 미리 정의하고 있는 제 1 임계값과 비교하는 단계와, (E) 상기 비교결과, 공통적인 상위(부모) 클래스를 갖는 객체수가 제 1 임계값보다 크면 메모리 누수 발생으로 판단하는 단계를 포함하여 이루어지는데 있다.
바람직하게 상기 (C) 단계의 검색 결과, 공통적인 상위(부모) 클래스를 갖는 객체들이 없는 경우, 상기 (B) 단계의 선별과정에서 선별된 동일한 객체들의 수를 미리 정의하고 있는 제 2 임계값과 비교하는 단계와, 상기 비교결과 동일한 객체수가 제 2 임계값보다 크면 메모리 누수 발생으로 판단하는 단계를 더 포함하여 이루어지는 것을 특징으로 한다.
이상에서 설명한 바와 같은 본 발명에 따른 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법은 다음과 같은 효과가 있다.
첫째, 한 번의 스냅숏만을 활용하여 객체의 메모리 누수를 탐지함으로서, 분석 속도를 높일 수 있는 효과가 있다.
둘째, 객체지향 프로그램의 다형성을 고려하여 공통적인 상위(부모) 클래스를 갖고 있는 객체의 경우에도 메모리 누수를 탐지함으로서, 분석 정밀도를 높일 수 있는 효과가 있다.
도 1 은 본 발명의 실시예에 따른 힙 분석을 이용한 메모리 누수 탐지 장치의 구성을 나타낸 블록도
도 2 는 본 발명의 실시예에 따른 힙 분석을 이용한 메모리 누수 탐지 방법을 설명하기 위한 흐름도
도 3 은 도 2의 상위 클래스가 동일하고 객체의 유형이 서로 다른 경우를 나타낸 도면
도 4 는 도 3의 경우의 Java 코드를 나타낸 프로그램
본 발명의 다른 목적, 특성 및 이점들은 첨부한 도면을 참조한 실시예들의 상세한 설명을 통해 명백해질 것이다.
본 발명에 따른 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법의 바람직한 실시예에 대하여 첨부한 도면을 참조하여 설명하면 다음과 같다. 그러나 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록하며 통상의 지식을 가진자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다. 따라서 본 명세서에 기재된 실시예와 도면에 도시된 구성은 본 발명의 가장 바람직한 일 실시예에 불과할 뿐이고 본 발명의 기술적 사상을 모두 대변하는 것은 아니므로, 본 출원시점에 있어서 이들을 대체할 수 있는 다양한 균등물과 변형예들이 있을 수 있음을 이해하여야 한다.
도 1 은 본 발명의 실시예에 따른 힙 분석을 이용한 메모리 누수 탐지 장치의 구성을 나타낸 블록도이다.
도 1과 같이, 메모리 누수 탐지 장치는 물리적 힙정보 추출부(10)와, 객체 분석부(20)와, 객체 비교부(30)와, 메모리 누수 판단부(40)로 구성된다.
상기 물리적 힙정보 추출부(10)는 실행 중인 프로그램의 힙에 대한 정보를 추출한다. 이때, 상기 힙에 대한 정보는 1회의 힙에 대한 스냅숏을 말한다. 그리고 상기 물리적 힙정보 추출부(10)는 주기적으로 실행을 하거나, 또는 물리적 힙 영역의 변화 시 수행한다.
상기 객체 분석부(20)는 물리적 힙정보 추출부(10)에서 추출된 힙에 대한 정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별한다.
상기 객체 비교부(30)는 Java, C++ 등과 같은 객체지향 언어의 다형성을 고려하여 상기 선별된 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들을 선별한다. 그리고 이렇게 선별된 공통적인 상위(부모) 클래스를 갖는 객체들은 다시 객체 분석부(20)로 제공된다.
상기 메모리 누수 판단부(40)는 객체 분석부(20)에서 선별된 객체들을 기반으로 상기 공통적인 상위(부모) 클래스를 갖는 객체수가 미리 정의되어 있는 제 1 임계값보다 크거나, 또는 상기 동일한 객체수가 미리 정의되어 있는 제 2 임계값보다 크면 메모리 누수 발생으로 판단한다. 이때, 상기 제 1 임계값은 상기 제 2 임계값과 동일하거나 더 큰 값을 갖는 것이 바람직하다.
이와 같이 구성된 본 발명에 따른 힙 분석을 이용한 메모리 누수 탐지 장치의 동작을 첨부한 도면을 참조하여 상세히 설명하면 다음과 같다. 도 1 또는 도 2와 동일한 참조부호는 동일한 기능을 수행하는 동일한 부재를 지칭한다.
도 2 는 본 발명의 실시예에 따른 힙 분석을 이용한 메모리 누수 탐지 방법을 설명하기 위한 흐름도이다.
도 2를 참조하여 설명하면, 먼저 실행 중인 프로그램의 힙에 대한 정보를 추출한다(S10). 이때, 힙에 대한 정보는 1회의 힙에 대한 스냅숏을 말한다. 그리고 힙정보를 추출하는 방법으로는 동적 분석 방법으로 프로그램 실행 시에 추출할 수 있다.
이어, 상기 추출된 힙정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별한다(S20).
그리고 상기 선별된 객체들 중 Java, C++ 등과 같은 객체지향 언어의 다형성을 고려하여 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들이 있는지 검색한다(S30).
예를 들어, 도 3에서 도시하고 있는 것과 같이, 도 3(a)의 mail 객체와 도 3(b)의 mail 객체는 각각 TextMail, HTMLMail 클래스이다. 그러므로 위에서 설명하고 있는 기존의 방법 중 세 번째 방법에 따르면, 이 2개의 mail 객체는 다른 클래스의 객체라고 판단되어 누수라고 판단되지 않는다. 실제로 도 3(a)의 mail과 도 3(b)의 mail이 참조하는 하부 객체들 간에도 차이가 발견된다. 예를 들어 도 3(a)의 mail의 하부 객체 message는 TextMail 클래스의 객체이지만 3(b)의 mail의 하부 객체 message는 HTMLMail 클래스의 객체이다.
그러나 본 발명에서와 같이 객체지향 프로그램의 특성인 클래스 간의 상속 관계를 고려하여 객체들의 상위(부모) 클래스를 서로 비교하면 도 3(a)와 도 3(b)의 mail은 유사한 객체라고 판단하고 누수라고 판단하는 것이 정확할 수가 있다. 예를 들어, 도 4에서 도시하고 있는 Java 코드로서 Mail을 생성할 때 인자로 주어진 kind 변수에 따라서 TextMail을 생성하거나 HTMLMail을 생성하는 코드를 보여 주고 있어서, 해당 객체들의 상위(부모) 클래스를 검색해보면 서로 공통적인 mail 클래스가 검색될 것이다.
따라서 상기 공통적인 상위(부모) 클래스를 갖는 객체들이 있는지의 검색 결과(S30), 공통적인 상위(부모) 클래스를 갖는 객체들이 없는 경우는 상기 선별과정에서 선별된 동일한 객체들의 수를 미리 정의하고 있는 제 2 임계값과 비교하여(S40) 동일한 객체수가 제 2 임계값보다 크면 메모리 누수 발생으로 판단한다(S60).
또한 상기 공통적인 상위(부모) 클래스를 갖는 객체들이 있는지의 검색 결과(S30), 공통적인 상위(부모) 클래스를 갖는 객체들이 있는 경우는 검색된 공통적인 상위(부모) 클래스를 갖는 객체수를 미리 정의하고 있는 제 1 임계값과 비교하여(S50) 공통적인 상위(부모) 클래스를 갖는 객체수가 제 1 임계값보다 크면 메모리 누수 발생으로 판단한다(S50).
이때, 상기 제 1 임계값은 상기 제 2 임계값과 동일하거나 더 큰 값을 갖는 것이 바람직하며, 제 1 임계값 및 제 2 임계값이 작을수록 메모리 누수 현상을 보다 정확하고 빠르게 확인할 수 있는데 반해, 시스템에 메모리 누수 탐지를 위한 과부하를 초래할 수 있으며, 제 1 임계값 및 제 2 임계값이 클수록 시스템에 메모리 누수 탐지를 위한 부하를 줄일 수 있지만 메모리 누수 현상의 빠른 확인이 어려워지게 된다. 따라서 제 1 임계값 및 제 2 임계값은 시스템의 성능 및 요구되는 정확도에 따라 다양한 실시예가 가능함을 이해할 수 있을 것이다.
이와 같은 방법을 통해 도 4를 참조하면, TextMail의 객체가 많이 발견되거나, 아니면 HTMLMail의 객체가 많이 발견되는 경우도 메모리 누수라고 간주하는 것뿐만 아니라, TextMail, HTMLMail의 객체들이 많이 발견되어도 메모리 누수라고 간주하게 되어, 기존의 방법에 비해 분석 정밀도를 높일 수 있다.
상기에서 설명한 본 발명의 기술적 사상은 바람직한 실시예에서 구체적으로 기술되었으나, 상기한 실시예는 그 설명을 위한 것이며 그 제한을 위한 것이 아님을 주의하여야 한다. 또한, 본 발명의 기술적 분야의 통상의 지식을 가진자라면 본 발명의 기술적 사상의 범위 내에서 다양한 실시예가 가능함을 이해할 수 있을 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (6)

  1. 실행 중인 프로그램의 1회의 힙에 대한 스냅숏 정보를 추출하는 물리적 힙정보 추출부과,
    상기 물리적 힙정보 추출부에서 추출된 힙에 대한 정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별하는 객체 분석부와,
    객체지향 언어의 다형성을 고려하기 위해 상기 선별된 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들을 선별하는 객체 비교부와,
    상기 객체 분석부에서 상위(부모) 클래스가 공통적으로 선별된 객체들을 기반으로 상기 공통적인 상위(부모) 클래스를 갖는 객체수가 미리 정의되어 있는 제 1 임계값보다 크거나, 또는 상기 선별된 동일한 객체들의 수가 미리 정의되어 있는 제 2 임계값보다 크면 메모리 누수 발생으로 판단하는 메모리 누수 판단부를 포함하여 구성되는 것을 특징으로 하는 힙 분석을 이용한 메모리 누수 탐지 장치.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 물리적 힙정보 추출부는 주기적으로 실행을 하거나, 또는 물리적 힙 영역의 변화 시 수행하여 힙에 대한 정보를 추출하는 것을 특징으로 하는 힙 분석을 이용한 메모리 누수 탐지 장치.
  4. 제 1 항에 있어서,
    상기 제 1 임계값은 상기 제 2 임계값과 동일하거나 더 큰 값을 갖는 것을 특징으로 하는 힙 분석을 이용한 메모리 누수 탐지 장치.
  5. (A) 물리적 힙정보 추출부를 통해 실행 중인 프로그램의 힙에 대한 정보를 추출하는 단계와,
    (B) 객체 분석부에서 상기 추출된 힙정보를 바탕으로 현재 사용 중인 메모리의 사용량 관점에서 힙 공간이 사용하는 패턴을 분석하고 힙에 할당된 객체들을 분석하여 동일한 객체들을 선별하는 단계와,
    (C) 객체 비교부를 통해 상기 선별된 객체들 중 객체지향 언어의 다형성을 고려하기 위하여 객체들의 상위(부모) 클래스를 서로 비교하여 공통적인 상위(부모) 클래스를 갖는 객체들이 있는지 검색하는 단계와,
    (D) 객체 비교부에서 상기 검색 결과, 공통적인 상위(부모) 클래스를 갖는 객체들이 있는 경우, 상기 검색된 공통적인 상위(부모) 클래스를 갖는 객체수를 미리 정의하고 있는 제 1 임계값과 비교하는 단계와,
    (E) 메모리 누수 판단부를 통해 상기 비교결과, 공통적인 상위(부모) 클래스를 갖는 객체수가 제 1 임계값보다 크면 메모리 누수 발생으로 판단하는 단계와,
    (F) 객체 비교부에서 상기 (C) 단계의 검색 결과, 공통적인 상위(부모) 클래스를 갖는 객체들이 없는 경우, 상기 (B) 단계의 선별과정에서 선별된 동일한 객체들의 수를 미리 정의하고 있는 제 2 임계값과 비교하는 단계와,
    (G) 메모리 누수 판단부를 통해 상기 제 2 임계값과 비교결과 동일한 객체수가 제 2 임계값보다 크면 메모리 누수 발생으로 판단하는 단계를 더 포함하여 이루어지는 것을 특징으로 하는 힙 분석을 이용한 메모리 누수 탐지 방법.
  6. 삭제
KR20130075960A 2013-06-28 2013-06-28 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법 KR101494328B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20130075960A KR101494328B1 (ko) 2013-06-28 2013-06-28 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130075960A KR101494328B1 (ko) 2013-06-28 2013-06-28 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20150002300A KR20150002300A (ko) 2015-01-07
KR101494328B1 true KR101494328B1 (ko) 2015-02-23

Family

ID=52475754

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130075960A KR101494328B1 (ko) 2013-06-28 2013-06-28 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법

Country Status (1)

Country Link
KR (1) KR101494328B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101726361B1 (ko) * 2015-04-14 2017-04-13 한양대학교 산학협력단 하이브리드 가비지 수집 방법 및 장치
KR102148736B1 (ko) * 2018-08-23 2020-10-14 세메스 주식회사 메모리 사용량 모니터링 방법 및 기판처리장치
CN109828859B (zh) * 2019-01-23 2023-03-07 网易(杭州)网络有限公司 移动终端内存分析方法、装置、存储介质及电子设备
CN111258797B (zh) * 2020-01-13 2023-04-18 北京字节跳动网络技术有限公司 一种内存泄露的检测方法、装置、介质和电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004413A (ja) * 2005-06-23 2007-01-11 Hitachi Ltd メモリリークの検出方法
KR100936967B1 (ko) * 2009-08-04 2010-01-14 주식회사 엑셈 웹 어플리케이션 서버 운영 하에서 사용자 프로그램의 메모리 누수 추적 장치 및 그 방법
JP2010182016A (ja) 2009-02-04 2010-08-19 Nec Corp メモリリーク検出装置および方法ならびにプログラム
KR20120090920A (ko) * 2012-07-27 2012-08-17 부산대학교 산학협력단 메모리 누수 탐지 장치 및 방법, 그리고 컴퓨터로 읽을 수 있는 기록매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007004413A (ja) * 2005-06-23 2007-01-11 Hitachi Ltd メモリリークの検出方法
JP2010182016A (ja) 2009-02-04 2010-08-19 Nec Corp メモリリーク検出装置および方法ならびにプログラム
KR100936967B1 (ko) * 2009-08-04 2010-01-14 주식회사 엑셈 웹 어플리케이션 서버 운영 하에서 사용자 프로그램의 메모리 누수 추적 장치 및 그 방법
KR20120090920A (ko) * 2012-07-27 2012-08-17 부산대학교 산학협력단 메모리 누수 탐지 장치 및 방법, 그리고 컴퓨터로 읽을 수 있는 기록매체

Also Published As

Publication number Publication date
KR20150002300A (ko) 2015-01-07

Similar Documents

Publication Publication Date Title
US8429620B2 (en) Memory leak diagnosis
KR101494328B1 (ko) 힙 분석을 이용한 메모리 누수 탐지 장치 및 방법
US20100017789A1 (en) Selectively Obtaining Call Stack Information Based on Criteria
US7827538B2 (en) Memory leak detection
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
CN101414272B (zh) 内存泄漏的检测方法和装置
US6523141B1 (en) Method and apparatus for post-mortem kernel memory leak detection
US20050268286A1 (en) Method of detecting memory leak causing portion and execution program thereof
US20050081190A1 (en) Autonomic memory leak detection and remediation
CN108664390B (zh) 一种内存泄露检测方法及设备
JP2013033412A (ja) メモリ管理方法、プログラム及びシステム
US7831640B2 (en) Using an overflow list to process mark overflow
US10956298B2 (en) Methods and apparatus to detect memory leaks in computing systems
US20110161614A1 (en) Pre-leak detection scan to identify non-pointer data to be excluded from a leak detection scan
CN103744776A (zh) 一种基于符号化函数摘要的静态分析方法及系统
KR20090112491A (ko) 메모리 누수 검출 장치 및 방법
CN109542778A (zh) 一种资源泄露检测的方法及装置
JP2007004413A (ja) メモリリークの検出方法
CN107122247B (zh) 一种静态占用图片的检测方法和装置
CN107168875B (zh) 一种基于安卓应用多入口特性的Activity构件泄露检测方法
KR101323220B1 (ko) 메모리 누수 탐지 장치 및 방법, 그리고 컴퓨터로 읽을 수 있는 기록매체
US7117318B1 (en) Memory management
US10031840B2 (en) Method of ascertaining primary cause of memory consumption in program, and computer system and computer program for the same
KR100936967B1 (ko) 웹 어플리케이션 서버 운영 하에서 사용자 프로그램의 메모리 누수 추적 장치 및 그 방법
CN105373488A (zh) 合法内存访问的探测方法及装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180110

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190130

Year of fee payment: 5