KR102205090B1 - 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치 - Google Patents

정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치 Download PDF

Info

Publication number
KR102205090B1
KR102205090B1 KR1020197002375A KR20197002375A KR102205090B1 KR 102205090 B1 KR102205090 B1 KR 102205090B1 KR 1020197002375 A KR1020197002375 A KR 1020197002375A KR 20197002375 A KR20197002375 A KR 20197002375A KR 102205090 B1 KR102205090 B1 KR 102205090B1
Authority
KR
South Korea
Prior art keywords
state
target
hot
threshold
address
Prior art date
Application number
KR1020197002375A
Other languages
English (en)
Other versions
KR20190059890A (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 KR20190059890A publication Critical patent/KR20190059890A/ko
Application granted granted Critical
Publication of KR102205090B1 publication Critical patent/KR102205090B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4434Reducing the memory space required by the program code
    • 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/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44594Unloading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/482Application
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

이 출원은 정보를 수집하는 방법을 제공한다. 방법은, 타겟 프로그램의 실행 라이프사이클에서 타겟 메소드를 호출하는 횟수가 증가하는 경우에, 타겟 메소드의 메소드 식별자에 기반하여, 타겟 메소드를 호출하는 횟수를 획득하는 단계와, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정하는 단계(메소드 상태는 타겟 프로그램에 의해 호출되고 메소드 상태에 대응하는 메소드의 상태를 지시하기 위해 사용되고, 메소드 상태는 제1 상태 또는 제2 상태이며, 제1 상태는 제1 임계치에 대응하고, 제2 상태는 제2 임계치에 대응하며, 제1 임계치 및 제2 임계치는 양의 정수이고, 제2 임계치는 0보다 크고 제1 임계치보다 작음)를 포함한다.

Description

정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치
본 발명은 정보 처리 분야에 관한 것으로, 특히, 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치에 관한 것이다.
안드로이드(Android) 운영 체제의 각 애플리케이션 프로그램은 독립적인 안드로이드 체제에서의 가상 머신(virtual machine), 안드로이드 런타임(Android RunTime)(ART) 인스턴스 상에서 실행된다. 애플리케이션 프로그램의 실행 프로세스에서는, 먼저, oat 파일 내의 머신 코드(machine code)를 실행하기 위해 oat 파일이 메모리 내에 로드된다(loaded). 호출될 필요가 있는 메소드(method)가 oat 파일에 포함되어 있지 않은 경우, ART는 메소드에 대응하는 dex 파일을 메모리(RAM, Random Access Memory) 내에 로드하고, 해석기(interpreter)(ART의 해석기)를 사용함으로써 dex 파일 내의 바이트코드(bytecode)를 해석 및 실행한다. 메소드를 호출하는 횟수(quantity of times)가 임계치(threshold)에 도달하는 경우, 메소드의 메소드 정보가 프로파일 파일(profile file)에 기록된다. 조건이 충족되는 경우(예컨대, 잠금 화면으로 4시간 동안 충전되고 있는 대기 상태(standby state)에서), ART는 프로파일 파일에 기록된 메소드 정보에 대응하는 메소드의 dex 파일에 대해 AOT(안드로이드 자바(Java) 프로그램의 사전 컴파일 기술(ahead-of-time compilation technology), Ahead Of Time) 컴파일을 수행하고, oat 파일을 업데이트한다. 이것은 다음 번 프로그램의 시작 및 실행을 가속화할 수 있다.
전술한 절차로부터 알 수 있는 바와 같이, 프로그램의 코드 세그먼트는 해석 또는 컴파일을 통해 획득된 머신 코드를 주로 포함한다. 프로그램이 실행됨에 따라, ART는 프로그램에 의해 호출될 메소드에 대응하는 dex 파일 내의 코드와 oat 파일 내의 코드를 파일 매핑(file mapping) 방식으로 메모리 내에 계속 로드한다. 따라서, 프로그램에 의해 요구되는 메모리도 계속 증가한다. 결과적으로, 더 많은 프로그램이 동시에 실행됨에 따라, 더 많은 메모리가 소비되고, 시스템의 이용가능한 메모리는 적어지게 된다.
애플리케이션 프로그램의 코드 세그먼트의 메모리의 소비를 감소시키기 위해, 새로운 중요한 특징인 Dexlayout이 안드로이드 O 버전에서 릴리즈되었다. ART가 스피드 프로파일(speed-profile) 형태로 dex 파일에 대해 AOT 컴파일을 수행하는 경우에, ART는 프로파일 파일 내의 정보에 기반하여 dex 파일의 레이아웃을 최적화하며, 새로운 dex 파일이 레이아웃 최적화 후에 생성되되, 클래스 및 메소드의 레이아웃이 변경되고, 핫(hot) 클래스 및 메소드는 앞쪽 부분에 집중화되지만, 콜드(cold) 클래스 및 메소드는 끝 부분에 집중화된다. 다시 말해, 파일 내의 핫 콘텐트(content) 및 콜드 콘텐트가 상이하게 처리된다. Dexlayout은 핫스팟(hot spot) 코드를 집중화한다. 새로운 dex 파일에서 드물게 사용되는 더 적은 코드가 메모리에 매핑되고, dex 파일에 의한 메모리의 점유가 최적화된다.
이상으로부터 알 수 있는 바와 같이, 프로파일 파일에 기록된 메소드 정보는 AOT 컴파일에 큰 영향을 미치지만, 선행 기술에서 프로파일 파일에 메소드 정보를 기록하는 방법은 더욱 최적화될 필요가 있다.
선행 기술에서의 기존의 기술적 문제점을 고려하여, 이 출원은 정보를 수집하는 방법을 제공한다.
제1 측면에 따르면, 이 출원은 정보를 수집하는 방법을 제공한다. 방법은 다음을 포함한다: 타겟 프로그램(target program)의 실행 라이프사이클(lifecycle)에서 타겟 메소드(target method)를 호출하는 횟수가 증가하는 경우에, 타겟 메소드의 메소드 식별자(method identifier)에 기반하여, 타겟 메소드를 호출하는 횟수를 획득하는 것(타겟 프로그램은 운영 체제(operating system)에서 실행 중인 임의의 프로그램이며, 타겟 메소드는 타겟 프로그램에 의해 호출된 적어도 하나의 메소드 중의 임의의 것이고, 호출하는 횟수는 타겟 프로그램의 실행 라이프사이클에서 타겟 메소드를 호출하는 현재의 횟수를 지시하기 위해 사용됨); 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태(method status)를 설정하는 것(메소드 상태는 타겟 프로그램에 의해 호출되고 메소드 상태에 대응하는 메소드의 상태를 지시하기 위해 사용되고, 메소드 상태는 제1 상태 또는 제2 상태이며, 제1 상태는 제1 임계치에 대응하고, 제2 상태는 제2 임계치에 대응하며, 제1 임계치 및 제2 임계치는 양의 정수이고, 제2 임계치는 0보다 크고 제1 임계치보다 작음). 제1 임계치 및 제2 임계치 양자 모두는 조정가능하고, 구현에서, 사용자 요구 또는 적용 시나리오에 기반하여 제1 임계치 및 제2 임계치를 조정 및 설정하기 위해 임계치 조정 인터페이스가 예약될(reserved) 수 있다. 메소드를 호출하는 횟수에 대해, 2개의 상이한 임계치가 설정된다. 기록된 메소드의 수량이 증가하는 경우, 기록된 메소드는 분류될 수 있고, 정보 수집은 최적화될 수 있다.
제1 측면의 가능한 구현에서, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정하는 것은 다음을 포함한다: 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하는 것; 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 타겟 메소드의 메소드 정보를 기록하고 타겟 메소드의 메소드 상태를 제1 상태로 설정하는 것; 그렇지 않은 경우, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정하는 것; 및 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰 경우, 타겟 메소드의 메소드 정보를 기록하고 타겟 메소드의 메소드 상태를 제2 상태로 설정하는 것.
제1 측면의 가능한 구현에서, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정하는 것은 다음을 포함한다: 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정하는 것; 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰 경우, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하는 것; 및 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 타겟 메소드의 메소드 정보를 기록하고 타겟 메소드의 메소드 상태를 제1 상태로 설정하는 것; 그렇지 않은 경우, 타겟 메소드의 메소드 정보를 기록하고 타겟 메소드의 메소드 상태를 제2 상태로 설정하는 것.
제1 측면의 가능한 구현에서, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정하기 전에, 방법은 다음을 더 포함한다: 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것; 그리고 타겟 메소드의 판정된 메소드 상태에 기반하여, 방법은 다음을 더 포함한다: 타겟 메소드의 메소드 상태가 존재하지 않는 경우, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정하는 단계를 수행하는 것; 또는 타겟 메소드의 메소드 상태가 제2 상태인 경우, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하는 것; 및 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하는 것.
제1 측면의 가능한 구현에서, 타겟 메소드의 메소드 상태를 설정하는 것은 다음을 포함한다: 상태 설정 함수를 호출하여 타겟 메소드의 메소드 식별자 및 대응하는 메소드 상태를 공유 매핑 내에 작성하는 것(공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계(correspondence)를 기록하기 위해 사용됨).
제1 측면의 가능한 구현에서, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것은 다음을 포함한다: 상태 반환 함수를 호출하여 타겟 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 타겟 메소드의 메소드 상태를 획득하는 것(공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하기 위해 사용됨); 및 상태 반환 함수에 의해 반환된 결과에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것.
제1 측면의 가능한 구현에서, 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하는 것은 다음을 포함한다: 상태 설정 함수를 호출하여 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하는 것.
제1 측면의 가능한 구현에서, 타겟 메소드의 메소드 정보를 기록하는 것은 다음을 포함한다: 타겟 메소드의 메소드 정보를 타겟 프로그램에 대응하는 프로파일 파일 내에 작성하는 것(프로파일 파일은 적어도 한 개(piece)의 메소드 정보를 포함함). 이 방법에 따르면, 저장된 메소드 정보는 프로파일 파일 내에 저장된 메소드 정보가 증가하는 경우에 분류된다.
제1 측면의 가능한 구현에서, 방법은 다음을 더 포함한다: 프로파일 파일 내의 핫 메소드(hot method)의 시작 어드레스(start address) 및 종료 어드레스(end address)를 획득하는 것(핫 메소드는 타겟 프로그램에 대응하는 프로파일 파일 내의 메소드 정보에 대응하는 메소드를 지시하기 위해 사용됨); 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드(cold method)의 시작 어드레스 및 종료 어드레스를 획득하는 것(콜드 메소드는 타겟 프로그램에 의해 호출되는 메소드(이의 대응하는 메소드 정보는 프로파일 파일에 작성되지 않음)를 지시하기 위해 사용됨); 및 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제하는 것. 선택적으로, 핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드를 지시하기 위해 사용되고, 콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응하는 메소드 정보가 프로파일 파일에 작성되지 않은 메소드, 그리고 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제2 상태인 메소드를 지시하기 위해 사용된다. 콜드 메소드의 코드에 의해 점유되며 해제될 필요가 있는 메모리는 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 사용함으로써 정확하게 위치결정될(positioned) 수 있고; 중복적으로 점유된 메모리는 실행 중인 프로그램(running program)의 보장된 원활한 실행과 함께 해제될 수 있으며, 새로운 프로그램을 시작하는 속도도 증가될 수 있다.
제1 측면의 가능한 구현에서, 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것은 다음을 포함한다: 핫 메소드의 메소드 식별자를 획득하는 것; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하는 것; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하는 것; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것; 및 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하는 것. 이것은 이 출원의 실시예에 따라 메소드의 시작 어드레스 및 종료 어드레스를 획득하기 위한 기술적 해결안일 뿐이다. 메소드의 시작 어드레스 및 종료 어드레스의 구체적인 획득은 이 출원의 이 실시예에서 한정되지 않는다.
제1 측면의 가능한 구현에서, 핫 메소드의 메소드 식별자를 획득하는 것 후에, 방법은: 핫 메소드의 메소드 식별자를 제1 세트에 저장하는 것을 포함하고; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하는 것은: 제1 세트를 순회하여(traverse) 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하고, 시작 어드레스의 값에 기반하여 핫 메소드의 시작 어드레스를 제2 세트에 저장하는 것을 포함하며; 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하는 것 후에, 방법은: 종료 어드레스의 값에 기반하여 핫 메소드의 종료 어드레스를 제3 세트에 저장하는 것을 포함한다. 모든 핫 메소드의 획득된 시작 어드레스 및 종료 어드레스는 어드레스의 값에 기반하여 대응 세트에 저장되는바, 대응하는 시작 어드레스 및 종료 어드레스는 순회(traversal)를 통해 취출된다.
제1 측면의 가능한 구현에서, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것은 다음을 포함한다: 제2 세트 및 제3 세트에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것.
제1 측면의 가능한 구현에서, 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제하는 것은 다음을 포함한다: 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것; 운영 체제에서의 단일 메모리 페이지의 크기, 콜드 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정하는 것(콜드 메소드 메모리 페이지는 코드 세그먼트 메모리가 콜드 메소드에 의해 완전히 점유된 메모리 페이지임); 및 콜드 메소드 메모리 페이지를 해제하는 것.
제1 측면의 가능한 구현에서, 방법은 다음을 더 포함한다: 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 해제하도록 운영 체제의 커널(kernel)에 권고하기 위해 제1 함수를 호출하는 것; 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것(핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하는 메소드 또는 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드를 지시하기 위해 사용됨); 및 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하는 것. 핫 메소드에 의해 점유된 메모리 페이지를 해제하는 것 및 액세스를 위반하는 콜드 메소드 메모리 페이지를 해제하는 것을 회피하는 것을 통해, 중복적으로 점유된 메모리는 실행 중인 프로그램의 보장된 원활한 실행과 함께 해제될 수 있고, 새로운 프로그램을 시작하는 속도도 증가될 수 있다.
제1 측면의 가능한 구현에서, 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것은 다음을 포함한다: 핫 메소드의 메소드 식별자를 획득하는 것; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하는 것; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하는 것; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것; 및 와 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하는 것.
제1 측면의 가능한 구현에서, 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하는 것은 다음을 포함한다: 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 운영 체제에서의 단일 메모리 페이지의 크기에 기반하여, 페이지 스패닝(page spanning)이 핫 메소드 내에 존재하는지를 판정하는 것(페이지 스패닝은 메소드가 적어도 2개의 메모리 페이지의 코드 세그먼트 메모리를 점유함을 지시하기 위해 사용됨); 및 페이지 스패닝이 핫 메소드 내에 존재하는 경우, 핫 메소드의 시작 어드레스, 중간 어드레스 및 종료 어드레스를 액세스하고, 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는 것(중간 어드레스는 동일한 메소드에서 시작 어드레스로부터 운영 체제에서의 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하기 위해 사용되고, N은 양의 정수임); 또는 페이지 스패닝이 핫 메소드 내에 존재하지 않는 경우, 핫 메소드의 시작 어드레스 및 종료 어드레스를 액세스하고, 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는 것.
제1 측면의 가능한 구현에서, 방법은 다음을 더 포함한다: 프로파일 파일 내의, 메소드 상태가 제1 상태인 메소드의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행하는 것.
이 출원의 이 실시예에서 제공되는 방법에 따르면, 자주 호출되는 메소드의 메소드 정보가 수집될 수 있고, 추가로, 수집된 메소드 정보에 대응하는 메소드가 분류된다. 메소드의 메소드 정보의 수집은 최적화되고, 메소드 정보를 머신 인식가능 코드로 컴파일하는 작업부하를 증가시키지 않으면서 호출된 메소드의 더 많은 메소드 정보가 수집된다. 또한, 콜드 메소드의 코드에 의해 점유되며 해제될 필요가 있는 특정 메모리 페이지가 위치결정될 수 있다. 따라서, 메모리는 프로그램의 원활한 실행이 보장되면서 정확하게 해제될 수 있거나, 콜드 메소드(비교적 드물게 호출되는 메소드)의 코드에 의해 점유된 메모리는 프로그램의 원활한 실행이 유지되면서 정확하게 해제된다.
제2 측면에 따르면, 이 출원은 정보를 수집하는 장치를 제공하는데, 장치는 다음을 포함한다: 타겟 프로그램의 실행 라이프사이클에서 타겟 메소드를 호출하는 횟수가 증가하는 경우에, 타겟 메소드의 메소드 식별자에 기반하여, 타겟 메소드를 호출하는 횟수를 획득하도록 구성된 호출 횟수 획득 모듈(타겟 프로그램은 운영 체제에서 실행 중인 임의의 프로그램이고, 타겟 메소드는 타겟 프로그램에 의해 호출된 적어도 하나의 메소드 중의 임의의 것이며, 호출하는 횟수는 타겟 프로그램의 실행 라이프사이클에서 타겟 메소드를 호출하는 현재의 횟수를 지시하기 위해 사용됨); 제1 임계치와, 제2 임계치와, 호출 횟수 획득 모듈에 의해 획득된, 타겟 메소드를 호출하는 횟수에 기반하여 타겟 메소드의 메소드 정보를 기록하도록 구성된 기록 모듈(제1 임계치 및 제2 임계치는 양의 정수이고, 제2 임계치는 0보다 크고 제1 임계치보다 작음); 및 제1 임계치와, 제2 임계치와, 호출 횟수 획득 모듈에 의해 획득된, 타겟 메소드를 호출하는 횟수에 기반하여 타겟 메소드의 메소드 상태를 설정하도록 구성된 상태 설정 모듈(메소드 상태는 타겟 프로그램에 의해 호출되고 메소드 상태에 대응하는 메소드의 상태를 지시하기 위해 사용되고, 메소드 상태는 제1 상태 또는 제2 상태이며, 제1 상태는 제1 임계치에 대응하고, 제2 상태는 제2 임계치에 대응함).
제2 측면의 가능한 구현에서, 장치는 제1 판정 모듈 및 제2 판정 모듈을 더 포함하되, 제1 판정 모듈은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하도록 구성되고; 제2 판정 모듈은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 작거나 같다고 제1 판정 모듈이 판정하는 경우에, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정하도록 구성되며; 기록 모듈은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제1 판정 모듈이 판정하고 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제2 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 정보를 기록하도록 구체적으로 구성되고; 상태 설정 모듈은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제1 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제1 상태로 설정하고, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제2 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제2 상태로 설정하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 장치는 제3 판정 모듈 및 제4 판정 모듈을 더 포함하되, 제3 판정 모듈은 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정하도록 구성되고; 제4 판정 모듈은, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제3 판정 모듈이 판정하는 경우에, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하도록 구성되며; 기록 모듈은, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제3 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 정보를 기록하도록 구체적으로 구성되고; 상태 설정 모듈은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제4 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제1 상태로 설정하고, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 작거나 같다고 제4 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제2 상태로 설정하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 장치는, 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하도록 구성된 상태 판정 모듈을 더 포함한다.
제2 측면의 가능한 구현에서, 장치는 제5 판정 모듈을 더 포함하되, 제5 판정 모듈은, 타겟 메소드의 메소드 상태가 제2 상태라고 상태 판정 모듈이 판정하는 경우에, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하도록 구성되고; 기록 모듈은, 타겟 메소드의 메소드 상태가 존재하지 않는다고 상태 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 정보를 기록하도록 구체적으로 구성되고; 상태 설정 모듈은, 타겟 메소드의 메소드 상태가 존재하지 않는다고 상태 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 상태를 설정하고, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제5 판정 모듈이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 상태 설정 모듈은, 상태 설정 함수를 호출하여 타겟 메소드의 메소드 식별자 및 대응하는 메소드 상태를 공유 매핑 내에 작성하도록 구체적으로 구성되되, 공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하기 위해 사용된다.
제2 측면의 가능한 구현에서, 상태 판정 모듈은, 상태 반환 함수를 호출하여 타겟 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 타겟 메소드의 메소드 상태를 획득하고(공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하기 위해 사용됨); 상태 반환 함수에 의해 반환된 결과에 기반하여 타겟 메소드의 메소드 상태를 판정하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 상태 설정 모듈은, 상태 설정 함수를 호출하여 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 기록 모듈은, 타겟 메소드의 메소드 정보를 타겟 프로그램에 대응하는 프로파일 파일 내에 작성하도록 구체적으로 구성되되, 프로파일 파일은 적어도 한 개의 메소드 정보를 포함한다.
제2 측면의 가능한 구현에서, 장치는 다음을 더 포함한다: 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하도록 구성되는 제1 핫 메소드 어드레스 획득 모듈(핫 메소드는 타겟 프로그램에 대응하는 프로파일 파일 내의 메소드 정보에 대응하는 메소드를 지시하기 위해 사용됨); 제1 핫 메소드 어드레스 획득 모듈에 의해 획득된, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 계산하도록 구성된 콜드 메소드 어드레스 계산 모듈(콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응하는 메소드 정보가 프로파일 파일 내에 작성되지 않은 메소드를 지시하기 위해 사용됨); 및 콜드 메소드 어드레스 계산 모듈에 의해 획득된, 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제하도록 구성된 제1 메모리 해제 모듈. 선택적으로, 핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드를 지시하기 위해 사용되고, 콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응하는 메소드 정보가 프로파일 파일에 작성되지 않은 메소드, 그리고 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제2 상태인 메소드를 지시하기 위해 사용된다.
제2 측면의 가능한 구현에서, 제1 핫 메소드 어드레스 획득 모듈은, 핫 메소드의 메소드 식별자를 획득하고; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하며; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하고; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하며; 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 제1 핫 메소드 어드레스 획득 모듈은, 핫 메소드의 메소드 식별자를 획득한 후에, 핫 메소드의 메소드 식별자를 제1 세트에 저장하고; 제1 세트를 순회하여 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하고, 시작 어드레스의 값에 기반하여 핫 메소드의 시작 어드레스를 제2 세트에 저장하며; 및 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득한 후에, 종료 어드레스의 값에 기반하여 핫 메소드의 종료 어드레스를 제3 세트에 저장하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 콜드 메소드 어드레스 계산 모듈은, 제1 핫 메소드 어드레스 획득 모듈에 의해 획득된 제2 세트 및 제3 세트에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 계산하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 장치는 콜드 메소드 메모리 페이지 모듈을 더 포함하되, 콜드 메소드 메모리 페이지 모듈은, 콜드 메소드 어드레스 계산 모듈에 의해 획득된, 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리의 크기를 계산하고; 운영 체제에서의 단일 메모리 페이지의 크기, 콜드 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정(콜드 메소드 메모리 페이지는 코드 세그먼트 메모리가 콜드 메소드에 의해 완전히 점유된 메모리 페이지임)하도록 구성되고; 제1 메모리 해제 모듈은, 콜드 메소드 메모리 페이지 모듈에 의해 획득된 콜드 메소드 메모리 페이지를 해제하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 장치는 다음을 더 포함한다: 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 해제하도록 운영 체제의 커널에 권고하기 위해 제1 함수를 호출하도록 구성된 해제 권고 모듈; 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하도록 구성된 제2 핫 메소드 어드레스 획득 모듈(핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하는 메소드 또는 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드를 지시하기 위해 사용됨); 및 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 제2 핫 메소드 어드레스 획득 모듈에 의해 획득된, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하도록 구성된 제2 메모리 해제 모듈.
제2 측면의 가능한 구현에서, 제2 핫 메소드 어드레스 획득 모듈은, 핫 메소드의 메소드 식별자를 획득하고; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하며; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하고; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하며;
핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 장치는: 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 운영 체제에서의 단일 메모리 페이지의 크기에 기반하여, 페이지 스패닝이 핫 메소드 내에 존재하는지를 판정하도록 구성된 페이지 스패닝 판정 모듈(페이지 스패닝은 메소드가 적어도 2개의 메모리 페이지의 코드 세그먼트 메모리를 점유함을 지시하기 위해 사용됨); 및 페이지 스패닝이 핫 메소드 내에 존재한다고 페이지 스패닝 판정 모듈이 판정하는 경우에, 핫 메소드의 시작 어드레스, 중간 어드레스 및 종료 어드레스를 액세스하고/하거나, 페이지 스패닝이 핫 메소드에 존재하지 않는다고 페이지 스패닝 판정 모듈이 판정하는 경우에, 핫 메소드의 시작 어드레스 및 종료 어드레스를 액세스하도록 구성된 어드레스 액세스 모듈(중간 어드레스는 동일한 메소드에서 시작 어드레스로부터 운영 체제에서의 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하기 위해 사용되며, N은 양의 정수임)을 더 포함하되, 제2 메모리 해제 모듈은, 어드레스 액세스 모듈에 의해 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하도록 구체적으로 구성된다.
제2 측면의 가능한 구현에서, 장치는, 프로파일 파일 내의, 그 메소드 상태가 제1 상태인 메소드의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행하도록 구성된 컴파일 모듈을 더 포함한다.
이 출원의 이 실시예에 제공되는 장치에 따르면, 자주 호출되는 메소드의 메소드 정보가 수집될 수 있고, 추가로, 수집된 메소드 정보에 대응하는 메소드가 분류된다. 메소드의 메소드 정보의 수집은 최적화되고, 메소드 정보를 머신 인식가능 코드로 컴파일하는 작업부하를 증가시키지 않으면서 호출된 메소드의 더 많은 메소드 정보가 수집된다. 또한, 콜드 메소드의 코드에 의해 점유되며 해제될 필요가 있는 특정 메모리 페이지가 위치결정될 수 있다. 따라서, 메모리는 프로그램의 원활한 실행이 보장되면서 정확하게 해제될 수 있고, 또는 콜드 메소드(비교적 드물게 호출되는 메소드)의 코드에 의해 점유된 메모리는 프로그램의 원활한 실행이 유지되면서 정확하게 해제된다.
제3 측면에 따르면, 이 출원은 컴퓨팅 디바이스(computing device)를 제공하되, 컴퓨팅 디바이스는 적어도 하나의 프로세서(processor) 및 적어도 하나의 저장 매체(storage medium)를 포함하고, 적어도 하나의 저장 매체는 프로그램가능(programmable) 명령어를 저장하며, 적어도 하나의 프로세서는 프로그램가능 명령어를 호출하여 제1 측면에서 기술된 방법 또는 제1 측면의 가능한 구현 중의 임의의 것을 수행한다.
제4 측면에 따르면, 이 출원은 컴퓨터 판독가능(computer readable) 저장 매체를 제공하되, 컴퓨터 판독가능 저장 매체는 프로그램가능 명령어를 저장하고, 프로그램가능 명령어가 컴퓨터 상에서 실행되는 경우에, 컴퓨터는 제1 측면에서 기술된 방법 또는 제1 측면의 가능한 구현 중의 임의의 것을 수행한다.
제5 측면에 따르면, 이 출원은 컴퓨터 프로그램 제품을 제공하되, 운영 체제는 제1 임계치, 제2 임계치 및 메소드 상태를 포함하고, 제2 임계치는 0보다 크고 제1 임계치보다 작으며, 메소드 상태는 메소드의 상태를 지시하기 위해 사용되고, 메소드 상태는 제1 상태 또는 제2 상태이며, 제1 상태는 메소드를 호출하는 대응하는 횟수가 제1 임계치보다 큰 상태를 지시하기 위해 사용되고, 제2 상태는 메소드를 호출하는 대응하는 횟수가 제2 임계치보다 크고 제1 임계치보다 작거나 같은 상태를 지시하기 위해 사용되며, 호출하는 횟수는 타겟 프로그램의 실행 라이프사이클에서 타겟 프로그램에 의해 메소드를 호출하는 횟수이고, 타겟 프로그램은 운영 체제에서 실행 중인 임의의 프로그램이다.
제5 측면의 가능한 구현에서, 운영 체제는 공유 매핑, 상태 설정 함수 및 상태 반환 함수를 더 포함하되, 공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하기 위해 사용되고, 메소드 식별자는 메소드 식별자에 대응하는 메소드를 지시하기 위해 사용되며; 상태 설정 함수는 동일한 메소드의 메소드 식별자 및 메소드 상태를 공유 매핑 내에 작성하거나 공유 매핑에서 메소드의 메소드 식별자에 대응하는 메소드 상태를 설정하기 위해 사용되며; 상태 반환 함수는 메소드의 메소드 식별자 및 공유 매핑에 기반하여 대응하는 메소드 상태를 반환하기 위해 사용된다.
제5 측면의 가능한 구현에서, 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우에, 상태 설정 함수는 메소드의 메소드 상태를 제1 상태로 설정하기 위해 사용되거나; 메소드를 호출하는 횟수가 제2 임계치보다 크고 제1 임계치보다 작거나 같은 경우에, 상태 설정 함수는 메소드의 메소드 상태를 제2 상태로 설정하기 위해 사용된다.
제6 측면에 따르면, 이 출원은 메모리를 해제하는 방법을 제공하되, 방법은 다음을 포함한다: 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것(핫 메소드는 타겟 프로그램에 대응하는 프로파일 파일 내의 메소드 정보에 대응하는 메소드를 지시하기 위해 사용되고, 선택적으로, 메소드 정보에 대응하는 메소드는 또한 사전설정된 조건을 만족하는 메소드 정보에 대응하는 메소드일 수 있으며, 선택적으로, 프로파일 파일은 제1 측면에서 기술된 방법 또는 제1 측면의 가능한 구현 중의 임의의 것을 사용함으로써 획득됨); 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것(콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응하는 메소드 정보가 프로파일 파일 내에 작성되지 않은 메소드를 지시하는 데 사용됨); 및 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제하는 것.
제6 측면의 가능한 구현에서, 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것은 다음을 포함한다: 핫 메소드의 메소드 식별자를 획득하는 것; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하는 것; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하는 것; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것; 및 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하는 것.
제6 측면의 가능한 구현에서, 핫 메소드의 메소드 식별자를 획득하는 것 후에, 방법은: 핫 메소드의 메소드 식별자를 제1 세트에 저장하는 것을 포함하고, 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하는 것은: 제1 세트를 순회하여 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하고, 시작 어드레스의 값에 기반하여 핫 메소드의 시작 어드레스를 제2 세트에 저장하는 것을 포함하며; 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하는 것 후에, 방법은: 종료 어드레스의 값에 기반하여 핫 메소드의 종료 어드레스를 제3 세트에 저장하는 것을 포함한다.
제6 측면의 가능한 구현에서, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것은 다음을 포함한다: 제2 세트 및 제3 세트에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것.
제6 측면의 가능한 구현에서, 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제하는 것은 다음을 포함한다: 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것; 운영 체제에서의 단일 메모리 페이지의 크기, 콜드 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정하는 것(콜드 메소드 메모리 페이지는 코드 세그먼트 메모리가 콜드 메소드에 의해 완전히 점유된 메모리 페이지임); 및 콜드 메소드 메모리 페이지를 해제하는 것.
이 출원의 이 실시예에서 제공되는 메모리를 해제하는 방법에 따르면, 콜드 메소드의 코드에 의해 점유되며 해제될 필요가 있는 특정 메모리 페이지가 위치결정될 수 있다. 따라서, 프로그램의 보장된 원활한 실행과 함께 메모리가 정확하게 해제될 수 있다.
제7 측면에 따르면, 이 출원은 메모리를 해제하는 방법을 제공하되, 방법은 다음을 포함한다: 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 해제하도록 운영 체제의 커널에 권고하기 위해 제1 함수를 호출하는 것; 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것(핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하는 메소드를 지시하기 위해 사용되고, 선택적으로, 메소드 정보에 대응하는 메소드는 또한 사전설정된 조건을 만족하는 메소드 정보에 대응하는 메소드일 수 있으며, 선택적으로, 프로파일 파일은 제1 측면에서 기술된 방법 또는 제1 측면의 가능한 구현 중의 임의의 것을 사용함으로써 획득됨); 및 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하는 것.
제7 측면의 가능한 구현에서, 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것은 다음을 포함한다: 핫 메소드의 메소드 식별자를 획득하는 것; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하는 것; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하는 것; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것; 및 핫 메소드의 시작 어드레스 및 핫 메소드의 코드에 의해 점유된 메모리의 크기에 기반하여 핫 메소드의 종료 어드레스를 획득하는 것.
제7 측면의 가능한 구현에서, 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하는 것은 다음을 포함한다: 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 운영 체제에서의 단일 메모리 페이지의 크기에 기반하여, 페이지 스패닝이 핫 메소드 내에 존재하는지를 판정하는 것(페이지 스패닝은 메소드가 적어도 2개의 메모리 페이지의 코드 세그먼트 메모리를 점유함을 지시하기 위해 사용됨); 및 페이지 스패닝이 핫 메소드 내에 존재하는 경우, 핫 메소드의 시작 어드레스, 중간 어드레스 및 종료 어드레스를 액세스하고, 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는 것(중간 어드레스는 동일한 메소드에서 시작 어드레스로부터 운영 체제에서의 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하기 위해 사용되고, N은 양의 정수임); 또는 페이지 스패닝이 핫 메소드에 존재하지 않는 경우, 핫 메소드의 시작 어드레스 및 종료 어드레스를 액세스하고, 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는 것.
이 출원의 이 실시예에서 제공되는 메모리를 해제하는 방법에 따르면, 콜드 메소드(상대적으로 드물게 호출되는 메소드)의 코드에 의해 점유된 메모리는 프로그램의 원활한 실행이 유지되면서 정확하게 해제될 수 있다.
제8 측면에 따르면, 이 출원은 컴퓨팅 디바이스를 제공하되, 컴퓨팅 디바이스는 적어도 하나의 프로세서 및 적어도 하나의 저장 매체를 포함하고, 적어도 하나의 저장 매체는 프로그램가능 명령어를 저장하며, 적어도 하나의 프로세서는 프로그램가능 명령어를 호출하여 제6 측면에서 기술된 방법 또는 제6 측면의 가능한 구현 중의 임의의 것 그리고/또는 제7 측면에서 기술된 방법 또는 제7 측면의 가능한 구현 중의 임의의 것을 수행한다.
제9 측면에 따르면, 이 출원은 컴퓨터 판독가능 저장 매체를 제공하되, 컴퓨터 판독가능 저장 매체는 프로그램가능 명령어를 저장하고, 프로그램가능 명령어가 컴퓨터 상에서 실행되는 경우에, 컴퓨터는 제6 측면에서 기술된 방법 또는 제6 측면의 가능한 구현 중의 임의의 것 그리고/또는 제7 측면에서 기술된 방법 또는 제7 측면의 가능한 구현 중의 임의의 것을 수행한다.
도 1은 이 출원의 실시예에 따른 모바일 전화(mobile phone)의 개략도이고,
도 2는 이 출원의 실시예에 따라 정보를 수집하는 방법의 흐름도이며,
도 3은 이 출원의 실시예에 따라 정보를 수집하는 방법의 흐름도이고,
도 4는 이 출원의 실시예에 따라 정보를 수집하는 방법의 흐름도이며,
도 5는 이 출원의 실시예에 따라 메소드 상태(method status)를 판정하는 방법의 흐름도이고,
도 6은 이 출원의 실시예에 따라 AOT 컴파일을 수행하는 방법의 흐름도이며,
도 7은 이 출원의 실시예에 따라 메모리를 해제하는(releasing) 방법의 흐름도이고,
도 8은 이 출원의 실시예에 따라 핫(hot) 메소드의 어드레스(address)를 획득하는 방법의 흐름도이며,
도 9는 이 출원의 실시예에 따른 콜드(cold) 메소드의 시작 어드레스 및 종료 어드레스의 개략도이고,
도 10은 이 출원의 실시예에 따라 메모리를 해제하는 방법의 흐름도이며,
도 11은 이 출원의 실시예에 따라 핫 메소드의 어드레스를 획득하는 방법의 흐름도이고,
도 12는 이 출원의 실시예에 따라 페이지 스패닝(page spanning)이 존재하는지를 판정하는 방법의 흐름도이며,
도 13은 이 출원의 실시예에 따른 핫 메소드의 페이지 스패닝의 개략도이고,
도 14는 이 출원의 실시예에 따른 단말 디바이스의 개략도이며,
도 15는 이 출원의 실시예에 따라 정보를 수집하는 장치의 개략도이고,
도 16은 이 출원의 실시예에 따라 정보를 수집하는 장치의 개략도이며,
도 17은 이 출원의 실시예에 따라 메모리를 해제하는 장치의 개략도이고,
도 18은 이 출원의 실시예에 따라 메모리를 해제하는 장치의 개략도이다.
이 출원의 목적, 기술적 해결안 및 이점을 더욱 명확하게 하기 위해, 다음은 첨부된 도면을 참조하여 이 출원의 기술적 해결안을 상세히 더 설명한다.
이 출원의 실시예에 따라 정보를 수집하는 방법은 다양한 단말에 적용될 수 있다. 단말 디바이스는 개인용 컴퓨터, 서버 컴퓨터, 핸드헬드(handheld) 또는 랩톱 디바이스, 모바일 디바이스(예컨대, 모바일 전화, 모바일 전화, 태블릿 컴퓨터, PDA, 또는 미디어 플레이어), 소비자 전자 디바이스, 차량내 컴퓨터, 스마트워치, 텔레비전, 디스플레이 스크린을 갖는 다른 단말 디바이스 또는 유사한 것을 포함하나 이에 한정되지 않는다.
다음은 모바일 전화를 예로서 사용함으로써 본 발명의 실시예의 특정 구현 프로세스를 상세히 설명한다. 다음은 우선, 도 1에 도시된 바와 같은, 모바일 전화의 특정 구조를 간략히 설명한다.
도 1은이 출원의 실시예에 적용되는 모바일 전화의 하드웨어 구조의 개략도이다. 도 1에 도시된 바와 같이, 모바일 전화(100)는 디스플레이 스크린(110), 프로세서(120) 및 메모리(130)를 포함한다. 메모리(130)는 컴퓨터 프로그램 및 데이터를 저장하도록 구성될 수 있다. 프로세서(120)는 메모리(130) 내에 저장된 컴퓨터 프로그램 및 데이터를 실행함으로써 모바일 전화(100)의 다양한 기능 적용 및 데이터 처리를 실행한다. 메모리(130)는 주로 프로그램 저장 영역 및 데이터 저장 영역을 포함할 수 있다. 프로그램 저장 영역은 운영 체제, 적어도 하나의 기능(예를 들어 이미지 재생 기능)에 의해 요구되는 애플리케이션 프로그램, 또는 유사한 것을 저장할 수 있다. 데이터 저장 영역은 모바일 전화(100)의 사용 등에 기반하여 생성된 데이터(예를 들어 오디오 데이터, 전화번호부 또는 이미지 데이터)를 저장할 수 있다. 추가로, 메모리(130)는 고속 랜덤 액세스 메모리를 포함할 수 있고, 비휘발성 메모리, 예컨대, 적어도 하나의 자기 디스크 저장 디바이스, 플래시 메모리 디바이스 또는 다른 휘발성 고체 상태(solid-state) 메모리 디바이스를 더 포함할 수 있다. 프로세서(120)는 모바일 전화(100)의 제어 센터이며, 다양한 인터페이스 및 라인을 사용하여 전체 모바일 전화의 모든 부분을 연결하고, 메모리(130)에 저장된 소프트웨어 프로그램 및/또는 데이터를 구동 또는 실행함으로써 모바일 전화(100)의 다양한 기능 및 데이터 처리를 실행하여, 모바일 전화에 대해 전반적인 모니터링을 수행한다. 프로세서(120)는 하나 이상의 범용 프로세서(general purpose processor)를 포함할 수 있거나, 하나 이상의 디지털 신호 프로세서(Digital Signal Processor, DSP)를 더 포함할 수 있거나, 하나 이상의 이미지 신호 프로세서(Image Signal Processor, ISP)를 포함할 수 있는데, 이 출원의 이 실시예에서 제공되는 기술적 해결안을 구현하기 위해 관련 동작을 수행하도록 구성된 것이다.
디스플레이 스크린(110)은 사용자에 의해 입력된 정보 또는 사용자에게 제공되는 정보 그리고 모바일 전화(100)의 다양한 메뉴 인터페이스를 디스플레이하도록 구성된다. 선택적으로, 디스플레이 스크린(110)에 대해, 디스플레이 스크린(110)은 액정 디스플레이(Liquid Crystal Display, LCD) 또는 OLED(유기 발광 다이오드, Organic Light-Emitting Diode)와 같은 형태로 구성될 수 있다.
모바일 전화(100)는 무선 주파수(Radio Frequency, RF) 회로(140)를 더 포함할 수 있다. RF 회로(140)는 호 프로세스(call process)에서 정보를 수신하고 송신하거나 신호를 수신하고 송신하도록 구성될 수 있다. 통상적으로, RF 회로(140)는 안테나(antenna), 적어도 하나의 증폭기(amplifier), 송수신기(transceiver), 커플러(coupler), 저잡음 증폭기(Low Noise Amplifier, LNA), 듀플렉서(duplexer) 또는 유사한 것을 포함하나 이에 한정되지 않는다.
모바일 전화(100)는 하나 이상의 센서(150), 예컨대, 이미지 센서, 광 센서 또는 모션 센서를 더 포함할 수 있다.
모바일 전화(100)는 입력된 디지털 정보, 문자 정보, 또는 접촉 터치 동작이나 비접촉 제스처를 수신하고, 모바일 전화(100)의 사용자 설정 및 기능 제어 등과 관련된 신호 입력을 생성하도록 구성된 입력/출력 인터페이스(160)를 더 포함할 수 있다. 구체적으로, 입력/출력 인터페이스(160)는 물리적 키보드, 기능 키(예를 들어 볼륨 제어 키 또는 온/오프 키), 터치스크린, 또는 유사한 것 중 하나 이상을 포함할 수 있으나 이에 한정되지 않는다.
추가로, 모바일 전화(100)는 각 컴포넌트에 전력을 공급하는 (배터리와 같은) 전력 공급기(170)를 더 포함한다. 전력 관리 시스템을 사용함으로써 충전 및 방전 관리 및 전력 소비 관리와 같은 기능을 구현하기 위해, 전력 공급기는 전력 관리 시스템을 사용함으로써 프로세서(120)에 논리적으로 연결될 수 있다.
물론, 특정 애플리케이션에서의 요구에 따라서, 모바일 전화(100)는 카메라, 오디오 회로, 확성기 또는 유사한 것을 더 포함할 수 있다. 그 부분은 이 출원의 이 실시예에서 자주 사용되는 부분이 아니기 때문에, 그 부분은 도 1에 도시되지 않고, 상세히 설명되지 않는다.
이 출원의 이 실시예에서, 도 1에 도시된 모바일 전화(100)는 설명을 위한 예로서 사용된다. 그러나, 이 출원의 이 실시예는 다른 유형의 디바이스에 적용될 수 있으며, 이것은 한정되지 않는다. 도 2에 도시된 바와 같이, 이 출원의 실시예는 정보를 수집하는 방법을 설명한다. 방법은 모바일 전화(100)에 적용되고, 운영 체제는 모바일 전화(100) 상에서 실행되며, 운영 체제는 안드로이드 운영 체제 또는 IOS에 한정되지 않는다. 방법은 다음의 단계를 포함한다.
S100. 타겟 메소드를 호출하는 횟수가 업데이트되는 경우에, 모바일 전화(100)는 타겟 메소드의 메소드 식별자에 기반하여, 타겟 메소드를 호출하는 횟수를 획득하는데, 타겟 메소드는 타겟 프로그램에 의해 호출되는 적어도 하나의 메소드 중의 임의의 것이고, 타겟 프로그램은 모바일 전화(100)의 운영 체제에서 실행되는 임의의 프로그램이며, 호출하는 횟수는 타겟 프로그램의 실행 라이프사이클에서 타겟 프로그램에 의해 메소드를 호출하는 횟수이고, 메소드 식별자는 타겟 프로그램에 의해 호출되고 메소드 식별자에 대응하는 메소드를 지시하는 데 사용된다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 타겟 메소드를 호출하는 횟수를 획득할 수 있고, 프로세서(120)를 사용함으로써 모바일 전화(100)의 메모리(130)로부터, 타겟 메소드를 호출하는 횟수를 또한 획득할 수 있다. 메모리(130)는 타겟 프로그램에 대응하는 실행 데이터를 저장하고, 타겟 메소드를 호출하는 횟수는 실행 데이터에 저장된다.
S200. 모바일 전화(100)는, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정하되, 메소드 상태는 타겟 프로그램에 의해 호출되고 메소드 상태에 대응하는 메소드의 상태를 지시하는 데 사용되고, 메소드 상태는 제1 상태 및 제2 상태로 분류되며, 제1 상태는 제1 임계치에 대응하고, 제2 상태는 제2 임계치에 대응하며, 제2 임계치는 0보다 크고 제1 임계치보다 작다. 구체적으로, 상태 설정 함수가 호출되어 타겟 메소드의 메소드 식별자 및 대응하는 메소드 상태를 공유 매핑 내에 작성하는데, 공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하는 데 사용된다. 선택적으로, 제1 임계치 및 제2 임계치는 조정가능한 임계치일 수 있다. 제1 임계치 및 제2 임계치는 달성될 목표에 기반하여 조정될 수 있다.
이 출원의 이 실시예에서, 타겟 메소드를 호출하는 횟수를 획득한 후에, 모바일 전화(100)는 프로세서(120)를 사용함으로써 메모리(130)로부터 제1 임계치 및 제2 임계치를 획득할 수 있고, 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록할 수 있다. 구체적으로, 프로세서(120)는 타겟 메소드를 호출하는 횟수, 제1 임계치 및 제2 임계치에 기반하여 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 설정한다. 더욱 구체적으로, 프로세서(120)는 메모리(130)로부터 상태 설정 함수를 호출하여 타겟 메소드의 메소드 식별자 및 대응 메소드 상태를 공유 매핑 내에 작성하여, 타겟 메소드의 메소드 상태를 설정하는 목적을 달성한다.
도 3에 도시된 바와 같이, S200은 구체적으로 다음의 단계를 포함한다.
S201. 모바일 전화(100)는 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정한다.
S202. 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 모바일 전화(100)는 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 제1 상태로 설정한다.
S203. 그렇지 않으면, 모바일 전화(100)는 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정한다.
S204. 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰 경우, 모바일 전화(100)는 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 제2 상태로 설정한다.
이 출원의 이 실시예에서, S200 전에, 방법은 S300을 더 포함한다: 모바일 전화(100)가 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것. 실제로, 타겟 메소드의 메소드 상태를 판정하는 것의 결과는 3가지 경우를 포함할 수 있다: 타겟 메소드의 대응하는 메소드 상태가 존재하지 않는 것, 타겟 메소드의 대응하는 메소드 상태가 제1 상태인 것, 그리고 타겟 메소드의 대응하는 메소드 상태가 제2 상태인 것.
이 출원의 이 실시예에서, 구체적으로, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정할 수 있거나, 또는 프로세서(120)를 사용함으로써 메모리(130)로부터 타겟 메소드의 메소드 식별자를 획득하고, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정할 수 있다.
이 출원의 이 실시예에서, 모바일 전화(100)에 의해, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것의 결과가, 타겟 메소드의 메소드 상태가 존재하지 않는 것인 경우, 모바일 전화(100)는 S200을, 구체적으로는, S201 내지 S204를 수행한다.
모바일 전화(100)에 의해, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것의 결과가, 타겟 메소드의 메소드 상태가 존재하지 않는 것인 경우, 모바일 전화(100)는 다음의 단계를 수행한다:
S400. 모바일 전화(100)는 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정한다.
S500. 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 모바일 전화(100)는 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정한다. 구체적으로, 모바일 전화(100)는 상태 설정 함수를 호출하여 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정한다.
모바일 전화(100)에 의해, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것의 결과가, 타겟 메소드의 메소드 상태가 제1 상태인 것인 경우, 그것은 타겟 메소드의 메소드 정보가 기록되었고 타겟 메소드의 메소드 상태가 더 이상 업데이트될 필요가 없음을 지시한다. 다시 말해, 모바일 전화(100)는 추가적인 특정 단계를 수행할 필요가 없다.
이 출원의 이 실시예에서, 구체적으로, 모바일 전화(100)는 프로세서(120) 및 메모리(130)와 협력하여 전술한 단계를 수행할 수 있다.
선택적으로, 도 4에 도시된 바와 같이, S200은 구체적으로 다음의 단계를 포함한다:
S210. 모바일 전화(100)는 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정한다.
S220. 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰 경우, 모바일 전화(100)는 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정한다.
S230. 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 모바일 전화(100)는 타겟 메소드의 메소드 정보를 기록하고, 타겟 메소드의 메소드 상태를 제1 상태로 설정한다.
S240. 그렇지 않으면, 모바일 전화(100)는 타겟 메소드의 메소드 정보를 기록하고 타겟 메소드의 메소드 상태를 제2 상태로 설정한다.
이 출원의 이 실시예에서, S200 전에, 방법은 S600을 더 포함한다: 모바일 전화(100)가 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것. 타겟 메소드의 메소드 상태를 판정하는 것의 결과는 3가지 경우를 포함할 수 있다. 그 경우는 여기에서 다시 기술되지 않는다. 세부사항에 대해서는, 도 3에 대응하는 실시예의 대응하는 설명을 참조하시오.
이 출원의 이 실시예에서, 구체적으로, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정할 수 있거나, 또는 프로세서(120)를 사용함으로써 메모리(130)로부터 타겟 메소드의 메소드 식별자를 획득하고, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정할 수 있다.
이 출원의 이 실시예에서, 모바일 전화(100)에 의해, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것의 결과가, 타겟 메소드의 메소드 상태가 존재하지 않는 것인 경우, 모바일 전화(100)는 S200을, 구체적으로는, S210 내지 S240을 수행한다. 모바일 전화(100)에 의해, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것의 결과가, 타겟 메소드의 메소드 상태가 존재하지 않는 것인 경우, 모바일 전화(100)는 다음의 단계를 수행한다:
S700. 모바일 전화(100)는 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정한다.
S800. 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우, 모바일 전화(100)는 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정한다. 구체적으로, 모바일 전화(100)는 상태 설정 함수를 호출하여 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정한다.
모바일 전화(100)에 의해, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하는 것의 결과가, 타겟 메소드의 메소드 상태가 제1 상태인 것인 경우, 그것은 타겟 메소드의 메소드 정보가 기록되었고 타겟 메소드의 메소드 상태가 더 이상 업데이트될 필요가 없음을 지시한다. 다시 말해, 모바일 전화(100)는 추가적인 특정 단계를 수행할 필요가 없다.
이 출원의 이 실시예에서, 구체적으로, 모바일 전화(100)는 프로세서(120) 및 메모리(130)와 협력하여 전술한 단계를 수행할 수 있다.
도 3에 대응하는 실시예에서의 단계 S300 내지 S500의 내용은 도 4에 대응하는 실시예에서의 단계 S600 내지 S800의 내용과 동일할 수 있고, 도 3에 대응하는 실시예에서의 단계 S201 내지 S204의 내용 및 도 4에 대응하는 실시예에서의 단계 S210 내지 S240은 단계 S200의 2가지 가능한 구현 방법 단계 중의 단계이다.
이 출원의 이 실시예에서, 도 5에 도시된 바와 같이, S300 또는 S600은 구체적으로 다음의 단계를 포함한다.
S310. 모바일 전화(100)는 상태 반환 함수를 호출하여 타겟 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 타겟 메소드의 메소드 상태를 획득한다.
이 출원의 이 실시예에서, 모바일 전화(100)는 프로세서(120)를 사용함으로써 상태 반환 함수를 호출하여, 타겟 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 타겟 메소드의 메소드 상태를 획득할 수 있거나, 또는 프로세서(120)를 사용함으로써 메모리(130)로부터 상태 반환 함수를 호출하고, 타겟 메소드의 메소드 식별자에 기반하여, 메모리(130) 내에 저장된 공유 매핑으로부터 타겟 메소드의 메소드 상태를 획득할 수 있다.
S320. 모바일 전화(100)는 상태 반환 함수에 의해 반환된 결과에 기반하여 타겟 메소드의 메소드 상태를 판정한다. 상태 반환 함수에 의해 반환된 결과는 3가지 경우를 포함한다. 그 경우는 여기에서 다시 기술되지 않는다. 세부사항에 대해서는, 도 3에 대응하는 실시예의 대응하는 설명을 참조한다. 실제 구현예에서, 그 경우는 다음과 같이 정의될 수 있다: 상태 반환 함수에 의해 반환된 결과가 널(null)인 경우, 그것은 메소드 상태가 존재하지 않음을 지시함; 반환된 결과가 0인 경우, 그것은 메소드 상태가 제1 상태임을 지시함; 또는 반환된 결과가 1인 경우, 그것은 메소드 상태가 제2 상태임을 지시함.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 상태 반환 함수에 의해 반환된 결과에 기반하여 타겟 메소드의 메소드 상태를 판정할 수 있다.
선택적으로, 전술한 실시예에서 타겟 메소드의 메소드 정보를 기록하는 것은 구체적으로, 타겟 프로그램의 메소드 정보를 타겟 프로그램에 대응하는 프로파일 파일 내에 기록하는 것이되, 프로파일 파일은 타겟 프로그램의 실행 데이터를 저장하는 데 사용되는 파일이며, 타겟 프로그램에 대응하는 프로파일 파일은 타겟 프로그램에 의해 호출되는 적어도 하나의 메소드에 관한 정보를 포함한다. 이 출원의 이 실시예에서, 도 6에 도시된 바와 같이, 타겟 프로그램에 대응하는 프로파일 파일에 기반하여, 메소드는 다음의 단계를 더 포함한다.
S900. 모바일 전화(100)는 상태 반환 함수를 호출하여 제2 클래스 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 제2 클래스 메소드의 메소드 상태를 획득하되, 제2 클래스 메소드는 타겟 프로그램에 대응하는 프로파일 파일 내의 메소드 정보에 대응하는 메소드를 지시하는 데 사용된다.
이 출원의 이 실시예에서, 모바일 전화(100)는 프로세서(120)를 사용함으로써 상태 반환 함수를 호출하여, 제2 클래스 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 제2 클래스 메소드의 메소드 상태를 획득할 수 있거나, 또는 프로세서(120)를 사용함으로써 메모리(130)로부터 상태 반환 함수를 호출하고, 제2 클래스 메소드의 메소드 식별자에 기반하여, 메모리(130) 내에 저장된 공유 매핑으로부터 제2 클래스 메소드의 메소드 상태를 획득할 수 있다.
S1000. 모바일 전화(100)는, 제2 클래스 메소드에서의, 대응하는 메소드 상태가 제1 상태인 메소드가, 제1 클래스 메소드임을 판정한다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 제2 클래스 메소드에서 대응 메소드 상태가 제1 상태인 메소드가 제1 클래스 메소드임을 판정할 수 있다.
S1100. 모바일 전화(100)는 획득된 제1 클래스 메소드의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행한다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 획득된 제1 클래스 메소드의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행할 수 있다.
이 출원의 이 실시예에 제공되는 정보를 수집하는 방법에 따르면, 자주 호출되는 메소드의 메소드 정보가 수집될 수 있고, 추가로, 수집된 메소드 정보에 대응하는 메소드가 분류된다. 메소드의 메소드 정보의 수집은 최적화되며, 메소드 정보를 머신 인식가능 코드로 컴파일하는 작업부하를 증가시키지 않으면서 호출된 메소드의 더 많은 메소드 정보가 수집된다.
프로그램이 실행됨에 따라, 프로그램에 의해 호출된 메소드의 코드가 메모리(RAM, Random Access Memory) 내에 연속적으로 로드된다는 것을 배경기술로부터 알 수 있다. 실행 프로그램의 원활한 실행을 보장하기 위해, 프로파일 파일에 기반하여 수집된 메소드 정보에 대해, 이 출원의 실시예는 메모리를 해제하는 두 방법을 제공하며, 방법은 다양한 단말에 적용될 수 있다. 이 출원의 실시예에서, 도 1에 도시된 모바일 전화(100)는 설명을 위한 예로서 사용된다. 그러나, 이 출원의 실시예는 다른 유형의 디바이스에 적용될 수 있으며, 이것은 한정되지 않는다. 구체적으로, 모바일 전화(100)의 메모리(130)는 두 유형의 특정 저장 매체인 RAM 및 ROM(Read Only Memory)을 포함한다. 이 출원의 실시예에 따라 메모리를 해제하는 방법은 모바일 전화(100)의 메모리를 해제하기 위해, 구체적으로는, 모바일 전화(100)의 RAM을 해제하기 위해 사용된다.
도 7에 도시된 바와 같이, 이 출원의 실시예는 메모리를 해제하는 방법을 제공하며, 방법은 다음의 단계를 포함한다.
S2100. 모바일 전화(100)는 타겟 프로그램에 대응하는 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하되, 핫 메소드는 타겟 프로그램에 대응하는 프로파일 파일 내의 메소드 정보에 대응하는 메소드를 지시하는 데 사용되며, 프로파일 파일 내의 메소드 정보는 전술한 실시예에 따라 정보를 수집하는 방법을 사용함으로써 획득될 수 있거나, 선행 기술에서의 기존의 방법 또는 후속하여 나타날 수 있는 방법을 사용함으로써 획득될 수 있으며, 프로파일 파일 내의 메소드 정보를 수집하는 특정 구현예는 이 출원의 이 실시예에 한정되지 않는다. 프로파일 파일 내의 메소드 정보가 전술한 실시예에 따라 정보를 수집하는 방법을 사용함으로써 획득되는 경우, 핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하는 메소드일 수 있거나, 또는 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드일 수 있음에 유의하여야 한다. 이 출원에서, 예컨대, 핫 메소드는 프로파일 파일 내의 메소드 정보에 대응하는 메소드이다. 상응하여, 핫 메소드가 프로파일 파일 내의 메소드 정보에 대응하는 메소드인 경우, 콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응하는 메소드 정보가 프로파일 파일 내에 기록되지 않은 메소드를 지시하는 데 사용되거나, 핫 메소드가 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드인 경우, 콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응하는 메소드 정보가 프로파일 파일 내에 기록되지 않은 메소드 그리고 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제2 상태인 메소드를 지시하는 데 사용된다.
또한, 도 8에 도시된 바와 같이, S2100은 구체적으로 다음의 단계를 포함한다.
S2110. 모바일 전화(100)는 핫 메소드의 메소드 식별자를 획득한다.
S2120. 모바일 전화(100)는 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득한다.
S2130. 모바일 전화(100)는 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득한다.
S2140. 모바일 전화(100)는, 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산한다.
S2150. 모바일 전화(100)는 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 종료 어드레스를 획득한다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, S2110 내지 S2150을 수행하여 타겟 프로그램에 대응하는 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득할 수 있다.
S2200. 모바일 전화(100)는 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는데, 콜드 메소드는 타겟 프로그램에 의해 호출되고 그 대응 메소드 정보가 프로파일 파일 내에 작성되지 않은 메소드를 지시하는 데 사용된다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득할 수 있다.
S2300. 모바일 전화(100)는 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제한다.
본 발명의 이 실시예에서, 모바일 전화(100)는 프로세서(120)를 사용함으로써 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제할 수 있다.
또한, 이 출원의 이 실시예에서, S2110 후에, 모바일 전화(100)는 핫 메소드의 메소드 식별자를 제1 세트에 저장한다.
추가로, S2120은 구체적으로, 모바일 전화(100)가 제1 세트를 순회하여 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하고, 시작 어드레스의 값에 기반하여 핫 메소드의 시작 어드레스를 제2 세트에 저장하는 것이다.
S2150 후에, 모바일 전화(100)는 종료 어드레스의 값에 기반하여 핫 메소드의 종료 어드레스를 제3 세트에 저장한다.
S2200는 구체적으로, 제2 세트 및 제3 세트에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 것을 포함한다.
메모리 내에 저장된 코드 세그먼트는 단지 핫 메소드 및 콜드 메소드를 포함하기 때문에, 도 9에서 콜드 메소드의 시작 어드레스 및 종료 어드레스의 개략도에 도시된 바와 같이, 핫 메소드 간의 메모리 영역은 콜드 메소드에 의해 점유된 메모리이다. 이 출원의 이 실시예에서, 제2 세트는 핫 메소드의 시작 어드레스를 저장하고, 제3 세트는 핫 메소드의 종료 어드레스를 저장한다. 구체적으로, 모바일 전화(100)는 프로세서(120)를 사용함으로써 제3 세트로부터 핫 메소드 1의 종료 어드레스를 획득하고, 제2 세트로부터 핫 메소드 2의 시작 어드레스를 획득한다. 콜드 메소드 영역 1은 핫 메소드 1의 종료 어드레스 및 핫 메소드 2의 시작 어드레스에 기반하여 획득될 수 있다. 콜드 메소드 영역 1은 하나 이상의 콜드 메소드를 포함할 수 있다. 복수의 콜드 메소드 영역이 이러한 방식으로 획득될 수 있는데, 구체적으로는, 콜드 메소드의 코드에 의해 점유된 메모리이다.
사실, 메모리는 일 페이지를 일 단위로서 사용한다. 또한, S2300은 구체적으로, 모바일 전화(100)가 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 것과, 모바일 전화(100)가 단일 메모리 페이지의 크기, 콜드 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정하는 것(콜드 메소드 메모리 페이지는 코드 세그먼트 메모리가 콜드 메소드의 코드에 의해 완전히 점유된 메모리 페이지임)과, 모바일 전화(100)가 콜드 메소드 메모리 페이지를 해제하는 것을 포함한다.
이 출원의 이 실시예에서 제공되는 메모리를 해제하는 방법에 따르면, 콜드 메소드의 코드에 의해 점유되며 해제될 필요가 있는 특정 메모리 페이지가 위치결정될(positioned) 수 있다. 따라서, 메모리는 프로그램의 보장된 원활한 실행과 함께 정확하게 해제될 수 있다.
도 10에 도시된 바와 같이, 이 출원의 실시예는 메모리를 해제하는 방법을 제공하며, 방법은 다음의 단계를 포함한다.
S3200. 모바일 전화(100)는 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하되, 핫 메소드는, 프로파일 파일 내의 메소드 정보에 대응하는 메소드 또는 프로파일 파일 내의 메소드 정보에 대응하고 그 메소드 상태가 제1 상태인 메소드를 지시하는 데 사용된다.
이 출원의 이 실시예에서, 모바일 전화(100)는 프로세서(120)를 사용함으로써 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득할 수 있다.
S3300. 모바일 전화(100)는 핫 메소드의 코드에 의해 점유된 메모리의 크기와, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드의 코드 세그먼트에 의해 점유된 메모리를 해제한다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 핫 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드의 코드 세그먼트에 의해 점유된 메모리를 해제할 수 있다.
선택적으로, S3200 전에, 방법은 S3100을 더 포함한다: 모바일 전화(100)가 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 해제하도록 권고하는 것. 구체적으로, 모바일 전화(100)는 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 운영 체제의 메모리에서 해제하도록 권고하기 위한 제1 함수를 호출한다. 예를 들어, 설치된 안드로이드 운영 체제에서, 메모리를 해제하는 것이 권고되며, 메모리가 직접 해제되지는 않는다. 메소드는 액세스를 통해 마킹될(marked) 수 있으며, 마킹된 메소드의 코드에 의해 점유된 메모리는 해제되지 않는다.
또한, 도 11에 도시된 바와 같이, S3200은 구체적으로 다음의 단계를 포함한다:
S3210. 모바일 전화(100)는 핫 메소드의 메소드 식별자를 획득한다.
S3220. 모바일 전화(100)는 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득한다.
S3230. 모바일 전화(100)는 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득한다.
S3240. 모바일 전화(100)는, 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산한다.
S3250. 모바일 전화(100)는 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 종료 어드레스를 획득한다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, S3210 내지 S3250을 수행하여 타겟 프로그램에 대응하는 프로파일 파일에서 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득할 수 있다.
또한, 도 12에 도시된 바와 같이, S3300은 구체적으로 다음의 단계를 포함한다.
S3310. 모바일 전화(100)는 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 단일 메모리 페이지의 크기에 기반하여, 핫 메소드 내에 페이지 스패닝이 존재하는지를 판정하는데, 페이지 스패닝은 동일한 클래스의 메소드 또는 메소드 영역의 코드가 적어도 2개의 연속적인 메모리 페이지의 코드 세그먼트 메모리를 점유함을 지시하는 데 사용된다.
S3320. 페이지 스패닝이 핫 메소드 내에 존재하는 경우, 모바일 전화(100)는 핫 메소드의 시작 어드레스, 중간 어드레스 및 종료 어드레스를 액세스하고, 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는데, 중간 어드레스는 동일한 메소드에서 시작 어드레스로부터 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하는 데 사용되며, N은 양의 정수이다.
도 13에 도시된 바와 같이, 단일 메모리 페이지의 크기는 4KB이다. 도면에서, 핫 메소드의 코드는 4개의 페이지를 점유하며, 이 경우, 중간 어드레스는 시작 어드레스+4KB 및 시작 어드레스+8KB이다.
S3330. 페이지 스패닝이 핫 메소드 내에 존재하지 않는 경우, 모바일 전화(100)는 핫 메소드의 시작 어드레스 및/또는 종료 어드레스를 액세스하고, 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제한다.
이 출원의 이 실시예에서, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 해제하는 것을 권고할 수 있다. 구체적으로, 모바일 전화(100)는, 프로세서(120)를 사용함으로써, 메모리(130)로부터 제1 함수를 호출하여, 타겟 프로그램에 의해 호출된 메소드의 코드에 의해 점유된 메모리를 운영 체제의 메모리에서 해제하는 것을 권고할 수 있다.
실제 구현에서, 예컨대, 설치된 안드로이드 운영 체제에서, S3300은 다음의 방법을 사용함으로써 구현될 수 있다: 우선, 시작 어드레스가 위치된 메모리 페이지 상에서 메소드에 의해 점유된 메모리의 크기를 계산하고(first_size = page_size - method_size%page_size), 이후 그 메소드에 의해 스패닝된 메모리 페이지의 수량을 계산하는 것(number = (method_size - first_size)/page_size + 1); 스패닝된 메모리 페이지의 수량이 1과 같은 경우, 그 메소드의 시작 어드레스 및 종료 어드레스를 액세스하는 것; 또는 스패닝된 메모리 페이지의 수량이 1보다 큰 경우, 시작 어드레스, 종료 어드레스 및 중간 어드레스를 액세스하는 것(현재 시퀀스 번호(cur_num)를 갖는 페이지 상에서의 중간 어드레스는 (method_start + page_size × cur_num)임).
이 출원의 이 실시예에서, 전술한 실시예에 따라 정보를 수집하는 방법을 사용함으로써 프로파일 파일이 획득되면, 메소드는 다음을 더 포함한다: 모바일 전화(100)는 프로파일 파일 내의, 메소드(이의 메소드 상태는 제1 상태임)의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행하는 것.
이 출원의 이 실시예에서 제공되는 메모리를 해제하는 방법에 따르면, 프로그램의 원활한 실행을 유지하면서, 콜드 메소드(상대적으로 드물게 호출되는 메소드)의 코드에 의해 점유된 메모리가 정확하게 해제될 수 있다.
선택적으로, 전술한 실시예에서 메모리를 해제하는 방법 또는 메모리를 해제하는 단계는 조건이 만족될 때 트리거된다(triggered)는 점에 유의하여야 한다. 예를 들어, 메모리 사용량이 임계치에 도달하는 경우, 전술한 실시예에서 메모리를 해제하는 단계 및 방법이 트리거되거나, 전술한 실시예에서 메모리를 해제하는 단계 또는 방법은 사전설정된 시간 간격에서 트리거될 수 있다. 이것은 이 출원에서 구체적으로 한정되지 않는다.
전술한 실시예에 기반하여, 이 출원의 실시예는 단말 디바이스(200)를 더 제공한다. 단말 디바이스(200)는 도 2 내지 도 6에 대응하는 실시예에 따라 정보를 수집하는 방법 및/또는 도 7 내지 도 9에 대응하는 실시예에 따라 메모리를 해제하는 방법 및/또는 도 10 내지 도 13에 대응하는 실시예에 따라 메모리를 해제하는 방법을 구현하도록 구성된다. 도 14를 참조하면, 단말 디바이스(200)는 메모리(201), 프로세서(202), 디스플레이 스크린(203) 및 입력/출력 인터페이스(204)를 포함할 수 있다.
메모리(201)는 프로세서(202)에 의해 실행되는 컴퓨터 프로그램을 저장하도록 구성된다. 메모리(201)는 주로 프로그램 저장 영역 및 데이터 저장 영역을 포함할 수 있다. 프로그램 저장 영역은 운영 체제, 적어도 하나의 함수에 의해 요구되는 애플리케이션 프로그램 또는 유사한 것을 저장할 수 있다. 데이터 저장 영역은 단말 디바이스(200)의 사용 등에 기반하여 생성되는 데이터를 저장할 수 있다. 프로세서(202)는 중앙 처리 유닛(Central Processing Unit, CPU), 디지털 처리 유닛 또는 유사한 것일 수 있다. 디스플레이 스크린(203)은 사용자에 의해 입력된 정보 또는 사용자를 위해 제공되는 정보를 디스플레이하도록 구성된다. 선택적으로, 디스플레이 스크린(203)에 대해, 디스플레이 스크린(203)은 액정 디스플레이(Liquid Crystal Display, LCD) 또는 OLED(유기 발광 다이오드, Organic Light-Emitting Diode)와 같은 형태로 구성될 수 있다.
메모리(201), 프로세서(202), 디스플레이 스크린(203) 및 입력/출력 인터페이스(204) 사이의 특정 연결 매체는 이 출원의 이 실시예에 한정되지 않는다. 이 출원의 이 실시예에서는, 메모리(201), 프로세서(202), 디스플레이 스크린(203) 및 입력/출력 인터페이스(204)는 도 14에서 버스(205)를 사용함으로써 연결된다. 도 14에서, 버스(205)는 굵은 선으로 표현되고, 다른 컴포넌트의 연결 모드는 단지 설명을 위한 예로서 사용되며, 한정되지 않는다. 버스(205)는 어드레스 버스, 데이터 버스, 제어 버스 등으로 분류될 수 있다. 표현의 용이함을 위해, 도 14에서 버스를 나타내기 위해 단지 하나의 굵은 선이 사용되나, 이것은 단지 하나의 버스 또는 단지 하나의 유형의 버스가 있음을 의미하지는 않는다.
메모리(201)는 휘발성 메모리(volatile memory), 예를 들어 랜덤 액세스 메모리(Random Access Memory, RAM)일 수 있거나, 메모리(201)는 비휘발성 메모리(non-volatile memory), 예를 들어, 판독 전용 메모리, 플래시 메모리(flash memory), 하드 디스크(hard disk, HDD), 또는 솔리드-스테이트 드라이브(Solid-State Drive, SSD)일 수 있거나, 메모리(201)는 명령어 또는 데이터 구조의 형태로 바라는 프로그램 코드를 반송 또는 저장하도록 구성될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체이나, 이에 한정되지 않는다. 메모리(201)는 전술한 메모리의 조합일 수 있다.
프로세서(202)는 메모리(201)에 저장된 컴퓨터 프로그램을 호출하여 도 2 내지 도 6에 대응하는 실시예에 따라 정보를 수집하는 방법 및/또는 도 7 내지 도 9에 대응하는 실시예에 따라 메모리를 해제하는 방법 및/또는 도 10 내지 도 13에 대응하는 실시예에 따라 메모리를 해제하는 방법을 수행하도록 구성된다. 특정 방법 단계에 대해서는, 대응하는 실시예의 설명을 참조하시오. 세부사항은 여기에서 다시 기술되지 않는다.
이 출원의 실시예는 정보를 수집하는 장치(300)를 더 제공하며, 장치는 도 2 내지 도 6에 대응하는 실시예에서 기술된 방법을 구현하도록 구성된다. 장치의 모듈의 대응하는 기능 및 모듈 간의 관계를 간략하게 기술하기 위해, 관련된 개념 및 설명은 다시 기술되지 않는다. 세부사항에 대해서는, 대응하는 방법 실시예에 대한 설명을 참조하시오. 도 15에 도시된 바와 같이, 장치(300)는 다음을 포함한다:
타겟 프로그램의 실행 라이프사이클에서 타겟 메소드를 호출하는 횟수가 증가하는 경우에, 타겟 메소드의 메소드 식별자에 기반하여, 타겟 메소드를 호출하는 횟수를 획득하도록 구성된 호출 횟수 획득 모듈(301);
제1 임계치와, 제2 임계치와, 호출 횟수 획득 모듈(301)에 의해 획득된, 타겟 메소드를 호출하는 횟수에 기반하여 타겟 메소드의 메소드 정보를 기록하도록 구성된 기록 모듈(302); 및
제1 임계치와, 제2 임계치와, 호출 횟수 획득 모듈(301)에 의해 획득된, 타겟 메소드를 호출하는 횟수에 기반하여 타겟 메소드의 메소드 상태를 설정하도록 구성된 상태 설정 모듈(302).
또한, 장치(300)는 다음을 더 포함한다: 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하도록 구성된 제1 판정 모듈(304); 및
타겟 메소드를 호출하는 횟수가 제1 임계치보다 작거나 같다고 제1 판정 모듈(304)이 판정하는 경우에, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정하도록 구성된 제2 판정 모듈(305).
기록 모듈(302)은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제1 판정 모듈(304)이 판정하고 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제2 판정 모듈(305)이 판정하는 경우에, 타겟 메소드의 메소드 정보를 기록하도록 구체적으로 구성된다.
상태 설정 모듈(303)은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제1 판정 모듈(304)이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제1 상태로 설정하고, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제2 판정 모듈(305)이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제2 상태로 설정하도록 구체적으로 구성된다.
또한, 장치(300)는, 타겟 메소드의 메소드 식별자에 기반하여 타겟 메소드의 메소드 상태를 판정하도록 구성된 상태 판정 모듈(306)을 더 포함한다.
또한, 장치(300)는, 상태 판정 모듈(306)이 타겟 메소드의 메소드 상태가 제2 상태라고 판정하는 경우에, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하도록 구성된 제5 판정 모듈(307)을 더 포함한다.
기록 모듈(302)은, 상태 판정 모듈(306)이 타겟 메소드의 메소드 상태가 존재하지 않는다고 판정하는 경우에, 타겟 메소드의 메소드 정보를 기록하도록 구체적으로 구성된다.
상태 설정 모듈(303)은, 타겟 메소드의 메소드 상태가 존재하지 않는다고 상태 판정 모듈(306)이 판정하는 경우에, 타겟 메소드의 메소드 상태를 설정하고, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제5 판정 모듈(307)이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하도록 구체적으로 구성된다.
또한, 상태 설정 모듈(303)은, 상태 설정 함수를 호출하여 타겟 메소드의 메소드 식별자 및 대응하는 메소드 상태를 공유 매핑 내에 작성하도록 구체적으로 구성된다.
또한, 상태 판정 모듈(306)은, 상태 반환 함수를 호출하여 타겟 메소드의 메소드 식별자에 기반하여 공유 매핑으로부터 타겟 메소드의 메소드 상태를 획득하고; 상태 반환 함수에 의해 반환된 결과에 기반하여 타겟 메소드의 메소드 상태를 판정하도록 구체적으로 구성된다.
또한, 상태 설정 모듈(303)은 또한, 상태 설정 함수를 호출하여 타겟 메소드의 메소드 상태를 제2 상태로부터 제1 상태로 설정하도록 구체적으로 구성된다.
또한, 기록 모듈(302)은, 타겟 메소드의 메소드 정보를 타겟 프로그램에 대응하는 프로파일 파일 내에 작성하도록 구체적으로 구성된다.
선택적으로, 도 16에 도시된 바와 같이, 장치(300)의 제1 판정 모듈(304)은 제3 판정 모듈(308)로 대체되고, 제2 판정 모듈(305)은 제4 판정 모듈(309)로 대체되거나, 제1 판정 모듈(304), 제2 판정 모듈(305), 제3 판정 모듈(308) 및 제4 판정 모듈(309)은 공존할 수 있거나 동일한 모듈일 수 있다. 이 출원의 이 실시예에서, 예를 들어, 제1 판정 모듈(304)은 제3 판정 모듈(308)로 대체되고, 제2 판정 모듈(305)은 제4 판정 모듈(309)로 대체된다.
제3 판정 모듈(308)은 타겟 메소드를 호출하는 횟수가 제2 임계치보다 큰지를 판정하도록 구성된다.
제4 판정 모듈(309)은, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제3 판정 모듈(308)이 판정하는 경우에, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 큰지를 판정하도록 구성된다.
기록 모듈(302)은, 타겟 메소드를 호출하는 횟수가 제2 임계치보다 크다고 제3 판정 모듈(308)이 판정하는 경우에, 타겟 메소드의 메소드 정보를 기록하도록 구체적으로 구성된다.
상태 설정 모듈(303)은, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 크다고 제4 판정 모듈(309)이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제1 상태로 설정하고, 타겟 메소드를 호출하는 횟수가 제1 임계치보다 작거나 같다고 제4 판정 모듈(309)이 판정하는 경우에, 타겟 메소드의 메소드 상태를 제2 상태로 설정하도록 구체적으로 구성된다.
제3 판정 모듈(308)과 제1 판정 모듈(304)은 동일한 모듈일 수 있으며, 제4 판정 모듈(309)과 제2 판정 모듈(305)은 동일한 모듈일 수 있음에 유의해야 한다.
이 출원의 이 실시예에서, 장치(300)와 단말 디바이스(200)는 동일한 디바이스이며, 장치(300)의 각 모듈은 메모리(201)에 저장된 컴퓨터 프로그램을 호출함으로써 도 14에 대응하는 실시예에서의 단말 디바이스(200)의 프로세서(202)에 의해 구체적으로 구현된다.
이 출원의 이 실시예에서 제공되는 정보를 수집하는 장치에 따르면, 빈번하게 호출되는 메소드의 메소드 정보가 수집될 수 있고, 추가로, 수집된 메소드 정보에 대응하는 메소드가 분류된다. 메소드의 메소드 정보의 수집은 최적화되며, 메소드 정보를 머신 인식가능 코드로 컴파일하는 작업부하를 증가시키지 않으면서 호출된 메소드의 더 많은 메소드 정보가 수집된다.
전술한 실시예에 기반하여, 이 출원의 실시예는 메모리를 해제하는 장치(400)를 제공하며, 장치는 도 7 내지 도 9에 대응하는 실시예에서 설명된 방법을 구현하도록 구성된다. 장치의 모듈의 대응하는 기능 및 모듈 간의 관계를 간략하게 기술하기 위해, 관련된 개념 및 설명은 다시 기술되지 않는다. 세부사항에 대해서는, 대응하는 메소드 실시예에 대한 설명을 참조하시오. 도 17에 도시된 바와 같이, 장치(400)는 다음을 포함한다:
프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하도록 구성된 제1 핫 메소드 어드레스 획득 모듈(401)(본 문서에서의 프로파일 파일은 전술한 실시예에서 단말 디바이스(200) 또는 장치(300)를 사용함으로써 획득될 수 있거나, 다른 장치를 사용함으로써 획득될 수 있음);
제1 핫 메소드 어드레스 획득 모듈(401)에 의해 획득된, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 계산하도록 구성된 콜드 메소드 어드레스 계산 모듈(402); 및
메소드 어드레스 계산 모듈(402)에 의해 획득된, 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리를 해제하도록 구성된 제1 메모리 해제 모듈(403).
또한, 제1 핫 메소드 어드레스 획득 모듈(401)은, 핫 메소드의 메소드 식별자를 획득하고; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하며; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하고; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하며; 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 종료 어드레스를 획득하도록 구체적으로 구성된다.
또한, 제1 핫 메소드 어드레스 획득 모듈(401)은 또한: 핫 메소드의 메소드 식별자를 획득한 후에, 제1 세트 내에 핫 메소드의 메소드 식별자를 저장하고; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하기 위해 제1 세트를 순회하고, 제2 세트 내에 핫 메소드의 시작 어드레스를 시작 어드레스의 값에 기반하여 저장하며; 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 종료 어드레스를 획득한 후, 제3 세트 내에 핫 메소드의 종료 어드레스를 종료 어드레스의 값에 기반하여 저장하도록 구체적으로 구성된다.
또한, 콜드 메소드 어드레스 계산 모듈(402)은, 제1 핫 메소드 어드레스 획득 모듈(401)에 의해 획득된 제2 세트 및 제3 세트에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 계산하도록 구체적으로 구성된다.
또한, 장치(400)는, 콜드 메소드 어드레스 계산 모듈(402)에 의해 획득된, 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 콜드 메소드의 코드에 의해 점유된 메모리의 크기를 계산하고, 단일 메모리 페이지의 크기, 콜드 메소드의 코드에 의해 점유된 메모리의 크기, 그리고 콜드 메소드의 시작 어드레스 및 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정하도록 구성된 콜드 메소드 메모리 페이지 모듈(404)을 더 포함한다.
제1 메모리 해제 모듈(403)은, 콜드 메소드 메모리 페이지 모듈(404)에 의해 획득된 콜드 메소드 메모리 페이지를 해제하도록 구체적으로 구성된다.
선택적으로, 장치(400)에 의해 획득된 프로파일 파일이, 예컨대, 설치된 안드로이드 운영 체제에서, 전술한 실시예에서 기술된 단말 디바이스(200) 또는 장치(300)를 사용함으로써 획득되면, 장치(400)는, 프로파일 파일 내에서의 메소드(이의 메소드 상태는 제1 상태임)의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행하도록 구성된 컴파일 모듈을 더 포함한다.
이 출원의 이 실시예에서, 장치(400)와 단말 디바이스(200)는 동일한 디바이스이며, 장치(400)의 각 모듈은 메모리(201)에 저장된 컴퓨터 프로그램을 호출함으로써 도 14에 대응하는 실시예에서의 단말 디바이스(200)의 프로세서(202)에 의해 구체적으로 구현된다.
또한, 전술한 실시예에서 기술된 장치(400) 및 장치(300)는 상이한 장치일 수 있거나, 동일한 장치에 통합될 수 있음에 유의하여야 한다.
이 출원의 이 실시예에서 제공되는 메모리를 해제하는 장치에 따르면, 콜드 메소드의 코드에 의해 점유되며 해제될 필요가 있는 특정 메모리 페이지가 위치결정될 수 있다. 따라서, 프로그램의 보장된 원활한 실행과 함께 메모리가 정확하게 해제될 수 있다.
전술한 실시예에 기반하여, 이 출원의 실시예는 메모리를 해제하는 장치(400)를 제공하며, 장치는 도 10 내지 도 13에 대응하는 실시예에서 기술된 방법을 구현하도록 더 구성된다. 장치의 모듈의 대응하는 기능 및 모듈 간의 관계를 간략하게 기술하기 위해, 관련된 개념 및 설명은 다시 기술되지 않는다. 세부사항에 대해서는, 대응 메소드 실시예에 대한 설명을 참조하시오. 도 18에 도시된 바와 같이, 장치(500)는 다음을 포함한다:
핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하도록 구성된 제2 핫 메소드 어드레스 획득 모듈(501)(본 문서에서의 프로파일 파일은 전술한 실시예에서 단말 디바이스(200) 또는 장치(300)를 사용함으로써 획득될 수 있거나, 다른 장치를 사용함으로써 획득될 수 있음); 및
핫 메소드의 코드에 의해 점유된 메모리의 크기와, 제2 핫 메소드 어드레스 획득 모듈에 의해 획득된, 핫 메소드의 시작 어드레스 및 종료 어드레스에 기반하여, 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하도록 구성된 제2 메모리 해제 모듈(502).
선택적으로, 장치(500)는, 제2 핫 메소드 어드레스 획득 모듈(501)이 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하기 전에, 메모리를 해제하는 것을 권고하도록 구성된 해제 권고 모듈(503)을 더 포함한다.
또한, 제2 핫 메소드 어드레스 획득 모듈(501)은: 핫 메소드의 메소드 식별자를 획득하고; 핫 메소드의 메소드 식별자에 기반하여 핫 메소드의 시작 어드레스를 획득하며; 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 헤더를 획득하고; 핫 메소드의 헤더에 기반하여, 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하며; 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 핫 메소드의 시작 어드레스에 기반하여 핫 메소드의 종료 어드레스를 획득하도록 구체적으로 구성된다.
또한, 장치(500)는: 핫 메소드의 코드에 의해 점유된 메모리의 크기 및 단일 메모리 페이지의 크기에 기반하여, 페이지 스패닝이 핫 메소드 내에 존재하는지를 판정하도록 구성된 페이지 스패닝 판정 모듈(페이지 스패닝은 메소드가 적어도 2개의 메모리 페이지의 코드 세그먼트 메모리를 점유함을 지시하는 데 사용됨); 및
페이지 스패닝이 핫 메소드 내에 존재한다고 페이지 스패닝 판정 모듈(504)이 판정하는 경우에, 핫 메소드의 시작 어드레스, 중간 어드레스 및 종료 어드레스를 액세스하고/하거나, 페이지 스패닝이 핫 메소드 내에 존재하지 않는다고 페이지 스패닝 판정 모듈(504)이 판정하는 경우에, 핫 메소드의 시작 어드레스 및 종료 어드레스를 액세스하도록 구성된 어드레스 액세스 모듈(505)(중간 어드레스는 동일한 메소드에서 시작 어드레스로부터 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하는 데 사용되며, N은 양의 정수임)을 더 포함하되,
제2 메모리 해제 모듈(502)은, 어드레스 액세스 모듈(505)에 의해 액세스되지 않고 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하도록 구체적으로 구성된다.
선택적으로, 장치(500)에 의해 획득된 프로파일 파일이, 예컨대, 설치된 안드로이드 운영 체제에서, 전술한 실시예에서 기술된 단말 디바이스(200) 또는 장치(300)를 사용함으로써 획득되면, 장치(500)는, 프로파일 파일 내에서의 메소드(이의 메소드 상태는 제1 상태임)의 메소드 정보에 대해 사전 컴파일 기술(AOT) 컴파일을 수행하도록 구성된 컴파일 모듈을 더 포함한다.
이 출원의 이 실시예에서, 장치(500)와 단말 디바이스(200)는 동일한 디바이스이며, 장치(500)의 각 모듈은 메모리(201)에 저장된 컴퓨터 프로그램을 호출함으로써 도 14에 대응하는 실시예에서의 단말 디바이스(200)의 프로세서(202)에 의해 구체적으로 구현된다.
또한, 전술한 실시예에서 설명된 장치(500) 및 장치(300)는 상이한 장치일 수 있거나, 동일한 장치에 통합될 수 있음에 유의하여야 한다. 장치(500)와 장치(400)는 동일한 장치에 통합될 수 있다.
이 출원의 이 실시예에서 제공되는 메모리를 해제하는 장치에 따르면, 프로그램의 원활한 실행을 유지하면서, 콜드 메소드(상대적으로 드물게 호출되는 메소드)의 코드에 의해 점유된 메모리가 정확하게 해제될 수 있다.
전술한 실시예에 기반하여, 이 출원의 실시예는 운영 체제를 제공하되, 운영 체제는 제1 임계치, 제2 임계치 및 메소드 상태를 포함하고, 제1 임계치 및 제2 임계치는 양의 정수이고, 제2 임계치는 0보다 크고 제1 임계치보다 작으며, 메소드 상태는 메소드의 상태를 지시하는 데 사용되고, 메소드 상태는 제1 상태 및 제2 상태를 포함하며, 제1 상태는 메소드를 호출하는 대응하는 횟수가 제1 임계치보다 큰 상태를 지시하는 데 사용되고, 제2 상태는 메소드를 호출하는 대응하는 횟수가 제2 임계치보다 크고 제1 임계치보다 작거나 같은 상태를 지시하는 데 사용되며, 호출하는 횟수는 타겟 프로그램의 실행 라이프사이클에서 타겟 프로그램에 의해 메소드를 호출하는 현재의 횟수이고, 타겟 프로그램은 운영 체제에서 실행 중인 임의의 프로그램이다.
운영 체제는 공유 매핑, 상태 설정 함수 및 상태 반환 함수를 더 포함하되, 공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하는 데 사용되고, 메소드 식별자는 메소드 식별자에 대응하는 메소드를 지시하는 데 사용되고; 상태 설정 함수는 동일한 메소드의 메소드 식별자 및 메소드 상태를 공유 매핑에 작성하거나 공유 매핑에서 메소드의 메소드 식별자에 대응하는 메소드 상태를 설정하는 데 사용되며; 상태 반환 함수는 메소드의 메소드 식별자 및 공유 매핑에 기반하여 대응 메소드 상태를 반환하는 데 사용된다.
또한, 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우에, 상태 설정 함수는 메소드의 메소드 상태를 제1 상태로 설정하는 데 사용되거나, 메소드를 호출하는 횟수가 제2 임계치보다 크고 제1 임계치보다 작거나 같은 경우, 상태 설정 함수는 메소드의 메소드 상태를 제2 상태로 설정하는 데 사용된다.
이 출원의 이 실시예에서 제공되는 운영 체제는 도 2 내지 도 6에 대응하는 실시예에 따라 정보를 수집하는 방법 및/또는 도 7 내지 도 9에 대응하는 실시예에 따라 메모리를 해제하는 방법 및/또는 도 10 내지 도 13에 대응하는 실시예에 따라 메모리를 해제하는 방법을 구현할 수 있다.
다음은 단말(예컨대, 전술한 실시예에서 기술된 모바일 전화(100) 또는 단말 디바이스)에 설치된 안드로이드 운영 체제를 예로서 사용한다. 선행 기술에서, 안드로이드 운영 체제의 각 애플리케이션 프로그램은 독립적인 ART(안드로이드 체제에서의 가상 머신, Android Runtime) 인스턴스 상에서 실행된다. 애플리케이션 프로그램의 실행 프로세스에서는, 먼저, oat 파일에서의 머신 코드를 실행하기 위해 oat 파일이 메모리 내에 로드된다. 호출될 필요가 있는 메소드가 oat 파일에 포함되어 있지 않은 경우, ART는 메소드에 대응하는 dex 파일을 메모리(RAM, Random Access Memory) 내에 로드하고, ART의 해석기를 사용함으로써 dex 파일 내의 바이트코드를 해석 및 실행한다. 메소드를 호출하는 횟수가 임계치(이하의 실시예에서 제1 임계치로 지칭됨)에 도달하는 경우에, 메소드의 메소드 정보는 프로파일 파일에 기록된다. 조건이 충족되는 경우(예컨대, 잠금 화면으로 4시간 동안 충전되고 있는 대기 상태에서), ART는 프로파일 파일에 기록된 메소드 정보에 대응하는 메소드의 dex 파일에 대해 AOT(안드로이드 자바 프로그램의 사전 컴파일 기술, Ahead Of Time) 컴파일을 수행하고, oat 파일을 업데이트한다. 이것은 다음 번 프로그램의 시작 및 실행을 가속화할 수 있다.
기존의 안드로이드 운영 체제가, 도 2 내지 도 6에 대응하는 실시예에 따라 정보를 수집하는 방법 및/또는 도 7 내지 도 9에 대응하는 실시예에 따라 메모리를 해제하는 방법 및/또는 도 10 내지 도 13에 대응하는 실시예에 따라 메모리를 해제하는 방법을 구현할 수 있게 하기 위해, 이 출원의 실시예는 안드로이드 운영 체제를 개선하는 방법을 제공한다. 방법은 다음을 포함한다: 안드로이드 운영 체제의 시스템 속성에 제2 임계치를 추가하는 것(안드로이드 운영 체제에서 제2 임계치는 0보다 크고 제1 임계치보다 작으며, 제1 임계치 및 제2 임계치는 양의 정수임); ART의 메소드 클래스의 정의에 메소드 상태를 추가하는 것(메소드 상태는 메소드의 상태를 지시하는 데 사용되고, 메소드 상태는 제1 상태 또는 제2 상태이며, 제1 상태는 메소드를 호출하는 횟수가 제1 임계치보다 큰 상태를 지시하는 데 사용되고, 제2 상태는 메소드를 호출하는 대응 횟수가 제2 임계치보다 크고 제1 임계치보다 작거나 같은 상태를 지시하는 데 사용되며, ART는 안드로이드 운영 체제의 프로그램을 실행하는 데 사용됨); 및 안드로이드 운영 체제에서 메소드 식별자로부터 메소드 상태로의 공유 매핑을 생성하는 것(공유 매핑은 메소드 식별자와 메소드 상태 사이의 대응관계를 기록하는 데 사용되며, 메소드 식별자는 메소드를 지시하는 데 사용됨);
ART의 메소드 클래스의 정의에 상태 설정 함수를 추가하는 것(상태 설정 함수는 동일한 메소드의 메소드 식별자 및 메소드 상태를 공유 매핑에 작성하는 데 사용됨); 및
ART의 메소드 클래스의 정의에 상태 반환 함수를 추가하는 것(상태 반환 함수는, 메소드 식별자 및 공유 매핑에 기반하여, 메소드 식별자에 의해 지시된 메소드의 메소드 상태를 반환하는 데 사용됨).
또한, 메소드를 호출하는 횟수가 제1 임계치보다 큰 경우에, 상태 설정 함수는 메소드의 메소드 상태를 제1 상태로 설정하는데 사용되거나, 메소드를 호출하는 횟수가 제2 임계치보다 크고 제1 임계치보다 작거나 같은 경우에, 상태 설정 함수는 메소드의 메소드 상태를 제2 상태로 설정하는 데 사용되되, 호출하는 횟수는 타겟 프로그램의 실행 라이프사이클에서 타겟 프로그램에 의해 임의의 메소드를 호출하는 횟수이고, 타겟 프로그램은 안드로이드 운영 체제에서 실행 중인 임의의 프로그램이다.
마지막으로, 전술한 실시예는 이 출원을 한정하는 것이 아니라 이 출원의 기술적 해결안을 기술하기 위해 의도될 뿐임에 유의하여야 한다. 이 출원은 전술한 실시예를 참조하여 상세히 기술되나, 통상의 기술자는, 이 출원의 실시예의 기술적 해결안의 범위를 벗어나지 않으면서, 전술한 실시예에서 기술된 기술적 해결안에 대해 그들이 여전히 수정을 행하거나 이의 일부 또는 모든 기술적 특징에 대한 등가의 대체를 행할 수 있음을 이해하여야 한다.

Claims (37)

  1. 정보를 수집하는 방법으로서,
    타겟 프로그램(target program)의 실행 라이프사이클(running lifecycle)에서 타겟 메소드(target method)를 호출하는 횟수가 증가하는 경우에, 상기 타겟 메소드의 메소드 식별자에 기반하여, 상기 타겟 메소드를 호출하는 상기 횟수를 획득하는 단계(S100) - 상기 타겟 프로그램은 임의의 실행 중인 프로그램이고, 상기 타겟 메소드는 상기 타겟 프로그램에 의해 호출된 적어도 하나의 메소드 중의 임의의 것임 - 와,
    상기 타겟 메소드를 호출하는 상기 횟수, 제1 임계치 및 제2 임계치에 기반하여 상기 타겟 메소드의 메소드 정보를 기록하고(S200), 상기 타겟 메소드의 메소드 상태를 설정하는 단계(S200) - 상기 메소드 상태는, 상기 메소드 상태에 대응하는 타겟 프로그램에 의해 호출되는 메소드의 상태를 지시하기(indicate) 위해 사용되고, 상기 메소드 상태는 제1 상태 또는 제2 상태이며, 상기 제1 상태는 상기 제1 임계치에 대응하고, 상기 제2 상태는 상기 제2 임계치에 대응하며, 상기 제1 임계치 및 상기 제2 임계치는 양의 정수이고, 상기 제2 임계치는 0보다 크고 상기 제1 임계치보다 작음 - 를 포함하는
    방법.
  2. 제1항에 있어서,
    상기 타겟 메소드를 호출하는 상기 횟수, 제1 임계치 및 제2 임계치에 기반하여 상기 타겟 메소드의 메소드 정보를 기록하고, 상기 타겟 메소드의 메소드 상태를 설정하는 단계는,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰지를 판정하는 단계(S201)와,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰 경우, 상기 타겟 메소드의 상기 메소드 정보를 기록하고 상기 타겟 메소드의 상기 메소드 상태를 상기 제1 상태로 설정하는 단계(S202)와,
    그렇지 않은 경우, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 큰지를 판정하는 단계(S203)와,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 큰 경우, 상기 타겟 메소드의 상기 메소드 정보를 기록하고 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로 설정하는 단계(S204)를 포함하는,
    방법.
  3. 제1항에 있어서,
    상기 타겟 메소드를 호출하는 상기 횟수, 제1 임계치 및 제2 임계치에 기반하여 상기 타겟 메소드의 메소드 정보를 기록하고, 상기 타겟 메소드의 메소드 상태를 설정하는 단계는,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 큰지를 판정하는 단계(S210)와,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 큰 경우, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰지를 판정하는 단계(S220)와,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰 경우, 상기 타겟 메소드의 상기 메소드 정보를 기록하고 상기 타겟 메소드의 상기 메소드 상태를 상기 제1 상태로 설정하는 단계(240)와,
    그렇지 않은 경우, 상기 타겟 메소드의 상기 메소드 정보를 기록하고 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로 설정하는 단계(S230)를 포함하는,
    방법.
  4. 제2항 또는 제3항에 있어서,
    상기 타겟 메소드를 호출하는 상기 횟수, 제1 임계치 및 제2 임계치에 기반하여 상기 타겟 메소드의 메소드 정보를 기록하고, 상기 타겟 메소드의 메소드 상태를 설정하는 단계 전에, 상기 방법은,
    상기 타겟 메소드의 상기 메소드 식별자에 기반하여 상기 타겟 메소드의 상기 메소드 상태를 판정하는 단계(S300,S600)를 더 포함하는,
    방법.
  5. 제4항에 있어서,
    상기 방법은,
    상기 타겟 메소드의 상기 메소드 상태가 존재하지 않는 경우, 상기 타겟 메소드를 호출하는 상기 횟수, 제1 임계치 및 제2 임계치에 기반하여 상기 타겟 메소드의 메소드 정보를 기록하고, 상기 타겟 메소드의 메소드 상태를 설정하는 단계(S200)를 수행하는 단계, 또는
    상기 타겟 메소드의 상기 메소드 상태가 상기 제2 상태인 경우, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰지를 판정하는 단계(S400,S700)와,
    상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰 경우, 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로부터 상기 제1 상태로 설정하는 단계(S500,S800)를 더 포함하는,
    방법.
  6. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 타겟 메소드의 메소드 상태를 설정하는 단계는,
    상태 설정 함수를 호출하여 상기 타겟 메소드의 상기 메소드 식별자 및 대응하는 메소드 상태를 공유 매핑(shared mapping) 내에 작성하는 단계 - 상기 공유 매핑은 상기 메소드 식별자와 상기 메소드 상태 사이의 대응관계(correspondence)를 기록하기 위해 사용됨 - 를 포함하는,
    방법.
  7. 제4항에 있어서,
    상기 타겟 메소드의 상기 메소드 식별자에 기반하여 상기 타겟 메소드의 상기 메소드 상태를 판정하는 단계는,
    상태 반환 함수를 호출하여 상기 타겟 메소드의 상기 메소드 식별자에 기반하여 공유 매핑으로부터 상기 타겟 메소드의 상기 메소드 상태를 획득하는 단계(S310) - 상기 공유 매핑은 상기 메소드 식별자와 상기 메소드 상태 사이의 대응관계를 기록하기 위해 사용됨 - 와,
    상기 상태 반환 함수에 의해 반환된 결과에 기반하여 상기 타겟 메소드의 상기 메소드 상태를 판정하는 단계(S320)를 포함하는,
    방법.
  8. 제5항에 있어서,
    상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로부터 상기 제1 상태로 설정하는 단계는,
    상태 설정 함수를 호출하여 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로부터 상기 제1 상태로 설정하는 단계를 포함하는,
    방법.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 타겟 메소드의 메소드 정보를 기록하는 것(S200)은,
    상기 타겟 메소드의 상기 메소드 정보를 상기 타겟 프로그램에 대응하는 프로파일 파일 내에 작성하는 단계 - 상기 프로파일 파일은 적어도 한 개(piece)의 메소드 정보를 포함함 - 를 포함하는,
    방법.
  10. 제9항에 있어서,
    상기 프로파일 파일 내의 핫 메소드(hot method)의 시작 어드레스 및 종료 어드레스를 획득하는 단계(S2100) - 상기 핫 메소드는 상기 프로파일 파일 내의 상기 메소드 정보에 대응하는 메소드를 지시하기 위해 사용됨 - 와,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여 콜드 메소드(cold method)의 시작 어드레스 및 종료 어드레스를 획득하는 단계(S2200) - 상기 콜드 메소드는 상기 타겟 프로그램에 의해 호출되는 메소드를 지시하기 위해 사용되되, 상기 콜드 메소드에 대응하는 메소드 정보는 상기 프로파일 파일 내에 작성되지 않음 - 와,
    상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 콜드 메소드의 코드에 의해 점유된 메모리를 해제하는(releasing) 단계(S2300)를 더 포함하는
    방법.
  11. 제10항에 있어서,
    상기 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 단계는,
    상기 핫 메소드의 메소드 식별자를 획득하는 단계(S2110)와,
    상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하는 단계(S2120)와,
    상기 핫 메소드의 상기 시작 어드레스에 기반하여 상기 핫 메소드의 헤더를 획득하는 단계(S2130)와,
    상기 핫 메소드의 상기 헤더에 기반하여, 상기 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하는 단계(S2140)와,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 획득하는 단계(S2150)를 포함하는,
    방법.
  12. 제11항에 있어서,
    상기 핫 메소드의 메소드 식별자를 획득하는 단계 후에, 상기 방법은, 상기 핫 메소드의 상기 메소드 식별자를 제1 세트에 저장하는 단계를 포함하고,
    상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하는 단계는, 상기 제1 세트를 순회하여(traverse) 상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하고, 상기 시작 어드레스의 값에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 제2 세트에 저장하는 단계를 포함하며,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 획득하는 단계 후에, 상기 방법은, 상기 종료 어드레스의 값에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 제3 세트에 저장하는 단계를 포함하는,
    방법.
  13. 제12항에 있어서,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 단계는,
    상기 제2 세트 및 상기 제3 세트에 기반하여 상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스를 획득하는 단계를 포함하는,
    방법.
  14. 제13항에 있어서,
    상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 콜드 메소드의 코드에 의해 점유된 메모리를 해제하는 단계는,
    상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 콜드 메소드의 상기 코드에 의해 점유된 상기 메모리의 크기를 계산하는 단계와,
    단일 메모리 페이지의 크기, 상기 콜드 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기, 그리고 상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정하는 단계 - 상기 콜드 메소드 메모리 페이지는 코드 세그먼트 메모리가 상기 콜드 메소드에 의해 완전히 점유된 메모리 페이지임 - 와,
    상기 콜드 메소드 메모리 페이지를 해제하는 단계를 포함하는,
    방법.
  15. 제9항에 있어서,
    핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 단계(S3200) - 상기 핫 메소드는 상기 프로파일 파일 내의 상기 메소드 정보에 대응하는 메소드 또는 상기 프로파일 파일 내의 상기 메소드 정보에 대응하고 메소드 상태가 상기 제1 상태인 메소드를 지시하기 위해 사용됨 - 와,
    상기 핫 메소드의 코드에 의해 점유된 메모리의 크기와, 상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하는 단계(S3300)를 더 포함하는
    방법.
  16. 제15항에 있어서,
    핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하는 단계(S3200)는,
    상기 핫 메소드의 메소드 식별자를 획득하는 단계(S3210)와,
    상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하는 단계(3220)와,
    상기 핫 메소드의 상기 시작 어드레스에 기반하여 상기 핫 메소드의 헤더를 획득하는 단계(S3230)와,
    상기 핫 메소드의 상기 헤더에 기반하여, 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기를 계산하는 단계(S3240)와,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 획득하는 단계(S3250)를 포함하는,
    방법.
  17. 제16항에 있어서,
    상기 핫 메소드의 코드에 의해 점유된 메모리의 크기와, 상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하는 단계(S3300)는,
    상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기 및 단일 메모리 페이지의 크기에 기반하여, 상기 핫 메소드 내에 페이지 스패닝(page spanning)이 존재하는지를 판정하는 단계(S3310) - 상기 페이지 스패닝은 메소드의 코드가 적어도 2개의 연속적인 메모리 페이지를 점유함을 지시하기 위해 사용됨 - 와,
    상기 핫 메소드 내에 페이지 스패닝이 존재하는 경우, 상기 핫 메소드의 상기 시작 어드레스, 중간 어드레스 및 상기 종료 어드레스를 액세스하고, 액세스되지 않고 상기 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는 단계(S3320) - 상기 중간 어드레스는 동일한 메소드에서 상기 시작 어드레스로부터 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하기 위해 사용되며, N은 양의 정수임 - 또는 상기 핫 메소드 내에 페이지 스패닝이 존재하지 않는 경우, 상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스를 액세스하고, 액세스되지 않고 상기 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하는 단계(S3330)를 포함하는,
    방법.
  18. 정보를 수집하는 장치로서,
    타겟 프로그램의 실행 라이프사이클에서 타겟 메소드를 호출하는 횟수가 증가하는 경우에, 상기 타겟 메소드의 메소드 식별자에 기반하여, 상기 타겟 메소드를 호출하는 상기 횟수를 획득하도록 구성된 호출 횟수 획득 모듈(301) - 상기 타겟 프로그램은 임의의 실행 중인 프로그램이고, 상기 타겟 메소드는 상기 타겟 프로그램에 의해 호출된 적어도 하나의 메소드 중의 임의의 것임 - 과,
    제1 임계치와, 제2 임계치와, 상기 호출 횟수 획득 모듈에 의해 획득된 상기 타겟 메소드를 호출하는 상기 횟수에 기반하여, 상기 타겟 메소드의 메소드 정보를 기록하도록 구성된 기록 모듈(302) - 상기 제1 임계치 및 상기 제2 임계치는 양의 정수이고, 상기 제2 임계치는 0보다 크고 상기 제1 임계치보다 작음 - 과,
    상기 제1 임계치와, 상기 제2 임계치와, 상기 호출 횟수 획득 모듈(301)에 의해 획득된 상기 타겟 메소드를 호출하는 상기 횟수에 기반하여 상기 타겟 메소드의 메소드 상태를 설정하도록 구성된 상태 설정 모듈(303) - 상기 메소드 상태는, 상기 메소드 상태에 대응하는 타겟 프로그램에 의해 호출되는 메소드의 상태를 지시하기 위해 사용되고, 상기 메소드 상태는 제1 상태 또는 제2 상태이며, 상기 제1 상태는 상기 제1 임계치에 대응하고, 상기 제2 상태는 상기 제2 임계치에 대응함 - 을 포함하는
    장치.
  19. 제18항에 있어서,
    제1 판정 모듈(304) 및 제2 판정 모듈(305)을 더 포함하되,
    상기 제1 판정 모듈(304)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰지를 판정하도록 구성되고,
    상기 제2 판정 모듈(305)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치 이하임을 상기 제1 판정 모듈(304)이 판정하는 경우에, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 큰지를 판정하도록 구성되며,
    상기 기록 모듈(302)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 크다고 상기 제1 판정 모듈(304)이 판정하고, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 크다고 상기 제2 판정 모듈(305)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 정보를 기록하도록 더 구성되고,
    상기 상태 설정 모듈(303)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 크다고 상기 제1 판정 모듈(304)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 상태를 상기 제1 상태로 설정하고, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 크다고 상기 제2 판정 모듈(305)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로 설정하도록 더 구성된,
    장치.
  20. 제18항에 있어서,
    제3 판정 모듈(308) 및 제4 판정 모듈(309)을 더 포함하되,
    상기 제3 판정 모듈(308)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 큰지를 판정하도록 구성되고,
    상기 제4 판정 모듈(309)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 크다고 상기 제3 판정 모듈(308)이 판정하는 경우에, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰지를 판정하도록 구성되며,
    상기 기록 모듈(302)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제2 임계치보다 크다고 상기 제3 판정 모듈(308)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 정보를 기록하도록 더 구성되고,
    상기 상태 설정 모듈(303)은, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 크다고 상기 제4 판정 모듈(309)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 상태를 상기 제1 상태로 설정하고, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치 이하라고 상기 제4 판정 모듈(309)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로 설정하도록 더 구성된,
    장치.
  21. 제19항 또는 제20항에 있어서,
    상기 타겟 메소드의 상기 메소드 식별자에 기반하여 상기 타겟 메소드의 상기 메소드 상태를 판정하도록 구성된 상태 판정 모듈(306)을 더 포함하는,
    장치.
  22. 제21항에 있어서,
    제5 판정 모듈(307)을 더 포함하되,
    상기 제5 판정 모듈(307)은, 상기 타겟 메소드의 상기 메소드 상태가 상기 제2 상태라고 상기 상태 판정 모듈(306)이 판정하는 경우에, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 큰지를 판정하도록 구성되고,
    상기 기록 모듈(302)은, 상기 타겟 메소드의 상기 메소드 상태가 존재하지 않는다고 상기 상태 판정 모듈(306)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 정보를 기록하도록 더 구성되며,
    상기 상태 설정 모듈(303)은, 상기 타겟 메소드의 상기 메소드 상태가 존재하지 않는다고 상기 상태 판정 모듈(306)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 상태를 설정하고, 상기 타겟 메소드를 호출하는 상기 횟수가 상기 제1 임계치보다 크다고 상기 제5 판정 모듈(307)이 판정하는 경우에, 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로부터 상기 제1 상태로 설정하도록 더 구성된,
    장치.
  23. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 상태 설정 모듈(303)은, 상태 설정 함수를 호출하여 상기 타겟 메소드의 상기 메소드 식별자 및 대응하는 메소드 상태를 공유 매핑 내에 작성 - 상기 공유 매핑은 상기 메소드 식별자와 상기 메소드 상태 사이의 대응관계를 기록하기 위해 사용됨 - 하도록 더 구성된,
    장치.
  24. 제21항에 있어서,
    상기 상태 판정 모듈(306)은, 상태 반환 함수를 호출하여 상기 타겟 메소드의 상기 메소드 식별자에 기반하여 공유 매핑으로부터 상기 타겟 메소드의 상기 메소드 상태를 획득 - 상기 공유 매핑은 상기 메소드 식별자와 상기 메소드 상태 사이의 대응관계를 기록하기 위해 사용됨 - 하고,
    상기 상태 반환 함수에 의해 반환된 결과에 기반하여 상기 타겟 메소드의 상기 메소드 상태를 판정하도록 더 구성된,
    장치.
  25. 제22항에 있어서,
    상기 상태 설정 모듈(303)은, 상태 설정 함수를 호출하여 상기 타겟 메소드의 상기 메소드 상태를 상기 제2 상태로부터 상기 제1 상태로 설정하도록 더 구성된,
    장치.
  26. 제18항 내지 제20항 중 어느 한 항에 있어서,
    상기 기록 모듈(302)은, 상기 타겟 메소드의 상기 메소드 정보를 상기 타겟 프로그램에 대응하는 프로파일 파일 내에 작성 - 상기 프로파일 파일은 적어도 한 개의 메소드 정보를 포함함 - 하도록 더 구성된,
    장치.
  27. 제26항에 있어서,
    상기 프로파일 파일 내의 핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하도록 구성된 제1 핫 메소드 어드레스 획득 모듈(401) - 상기 핫 메소드는 상기 타겟 프로그램에 대응하는 상기 프로파일 파일 내의 상기 메소드 정보에 대응하는 메소드를 지시하기 위해 사용됨 - 과,
    상기 제1 핫 메소드 어드레스 획득 모듈(401)에 의해 획득된, 상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여 콜드 메소드의 시작 어드레스 및 종료 어드레스를 계산하도록 구성된 콜드 메소드 어드레스 계산 모듈(402) - 상기 콜드 메소드는 상기 타겟 프로그램에 의해 호출되는 메소드를 지시하기 위해 사용되되, 상기 콜드 메소드에 대응하는 메소드 정보는 상기 프로파일 파일 내에 작성되지 않음 - 과,
    상기 콜드 메소드 어드레스 계산 모듈에 의해 획득된, 상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 콜드 메소드의 코드에 의해 점유된 메모리를 해제하도록 구성된 제1 메모리 해제 모듈(403)을 더 포함하는
    장치.
  28. 제27항에 있어서,
    상기 제1 핫 메소드 어드레스 획득 모듈(401)은,
    상기 핫 메소드의 메소드 식별자를 획득하고,
    상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하며,
    상기 핫 메소드의 상기 시작 어드레스에 기반하여 상기 핫 메소드의 헤더를 획득하고,
    상기 핫 메소드의 상기 헤더에 기반하여, 상기 핫 메소드의 코드에 의해 점유된 메모리의 크기를 계산하며,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 획득하도록 더 구성된,
    장치.
  29. 제28항에 있어서,
    상기 제1 핫 메소드 어드레스 획득 모듈(401)은,
    상기 핫 메소드의 상기 메소드 식별자를 획득한 후에, 상기 핫 메소드의 상기 메소드 식별자를 제1 세트에 저장하고,
    상기 제1 세트를 순회하여 상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하고, 상기 시작 어드레스의 값에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 제2 세트에 저장하며,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 획득한 후에, 상기 종료 어드레스의 값에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 제3 세트에 저장하도록 더 구성된,
    장치.
  30. 제29항에 있어서,
    상기 콜드 메소드 어드레스 계산 모듈(402)은, 상기 제1 핫 메소드 어드레스 획득 모듈(401)에 의해 획득된 상기 제2 세트 및 상기 제3 세트에 기반하여 상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스를 계산하도록 더 구성된,
    장치.
  31. 제30항에 있어서,
    콜드 메소드 메모리 페이지 모듈(404)을 더 포함하되,
    상기 콜드 메소드 메모리 페이지 모듈은, 상기 콜드 메소드 어드레스 계산 모듈(402)에 의해 획득된, 상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 콜드 메소드의 상기 코드에 의해 점유된 상기 메모리의 크기를 계산하고,
    단일 메모리 페이지의 크기, 상기 콜드 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기, 그리고 상기 콜드 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여 콜드 메소드 메모리 페이지를 판정 - 상기 콜드 메소드 메모리 페이지는 코드 세그먼트 메모리가 상기 콜드 메소드에 의해 완전히 점유된 메모리 페이지임 - 하도록 구성되고,
    상기 제1 메모리 해제 모듈(403)은, 상기 콜드 메소드 메모리 페이지 모듈(404)에 의해 획득된 상기 콜드 메소드 메모리 페이지를 해제하도록 더 구성된,
    장치.
  32. 제26항에 있어서,
    핫 메소드의 시작 어드레스 및 종료 어드레스를 획득하도록 구성된 제2 핫 메소드 어드레스 획득 모듈(501) - 상기 핫 메소드는 상기 프로파일 파일 내의 상기 메소드 정보에 대응하는 메소드 또는 상기 프로파일 파일 내의 상기 메소드 정보에 대응하고 메소드 상태가 상기 제1 상태인 메소드를 지시하기 위해 사용됨 - 과,
    상기 핫 메소드의 코드에 의해 점유된 메모리의 크기와, 상기 제2 핫 메소드 어드레스 획득 모듈(501)에 의해 획득된, 상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스에 기반하여, 상기 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 코드 세그먼트 메모리를 해제하도록 구성된 제2 메모리 해제 모듈(502)을 더 포함하는
    장치.
  33. 제32항에 있어서,
    상기 제2 핫 메소드 어드레스 획득 모듈(501)은,
    상기 핫 메소드의 메소드 식별자를 획득하고,
    상기 핫 메소드의 상기 메소드 식별자에 기반하여 상기 핫 메소드의 상기 시작 어드레스를 획득하며,
    상기 핫 메소드의 상기 시작 어드레스에 기반하여 상기 핫 메소드의 헤더를 획득하고,
    상기 핫 메소드의 상기 헤더에 기반하여, 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기를 계산하며,
    상기 핫 메소드의 상기 시작 어드레스 및 상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기에 기반하여 상기 핫 메소드의 상기 종료 어드레스를 획득하도록 더 구성된,
    장치.
  34. 제33항에 있어서,
    상기 핫 메소드의 상기 코드에 의해 점유된 상기 메모리의 상기 크기 및 단일 메모리 페이지의 크기에 기반하여, 상기 핫 메소드 내에 페이지 스패닝이 존재하는지를 판정하도록 구성된 페이지 스패닝 판정 모듈(504) - 상기 페이지 스패닝은 메소드가 적어도 2개의 메모리 페이지의 코드 세그먼트 메모리를 점유함을 지시하기 위해 사용됨 - 과,
    상기 핫 메소드 내에 페이지 스패닝이 존재한다고 상기 페이지 스패닝 판정 모듈(504)이 판정하는 경우에, 상기 핫 메소드의 상기 시작 어드레스, 중간 어드레스 및 상기 종료 어드레스를 액세스하거나, 상기 핫 메소드 내에 페이지 스패닝이 존재하지 않는다고 상기 페이지 스패닝 판정 모듈(504)이 판정하는 경우에, 상기 핫 메소드의 상기 시작 어드레스 및 상기 종료 어드레스를 액세스하도록 구성된 어드레스 액세스 모듈(505) - 상기 중간 어드레스는 동일한 메소드에서 상기 시작 어드레스로부터 N개의 단일 메모리 페이지의 거리에 있는 어드레스를 지시하기 위해 사용되고, N은 양의 정수임 - 을 더 포함하되,
    상기 제2 메모리 해제 모듈(502)은, 상기 어드레스 액세스 모듈(505)에 의해 액세스되지 않고 상기 타겟 프로그램에 의해 호출된 메소드에 의해 점유된 메모리 페이지를 해제하도록 더 구성된,
    장치.
  35. 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 판독가능 저장 매체는 프로그램가능 명령어를 저장하고, 상기 프로그램가능 명령어가 컴퓨터 상에서 실행되는 경우에, 상기 컴퓨터는 제1항에 따른 방법을 수행하는,
    컴퓨터 판독가능 저장 매체.
  36. 삭제
  37. 삭제
KR1020197002375A 2017-10-26 2018-06-28 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치 KR102205090B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201711013628.5 2017-10-26
CN201711013628.5A CN109710396B (zh) 2017-10-26 2017-10-26 一种信息采集及内存释放的方法及装置
PCT/CN2018/093302 WO2019080531A1 (zh) 2017-10-26 2018-06-28 一种信息采集及内存释放的方法及装置

Publications (2)

Publication Number Publication Date
KR20190059890A KR20190059890A (ko) 2019-05-31
KR102205090B1 true KR102205090B1 (ko) 2021-01-19

Family

ID=66247139

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197002375A KR102205090B1 (ko) 2017-10-26 2018-06-28 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치

Country Status (7)

Country Link
US (1) US11138034B2 (ko)
EP (1) EP3518111A4 (ko)
KR (1) KR102205090B1 (ko)
CN (1) CN109710396B (ko)
BR (1) BR112019000593A2 (ko)
CA (1) CA3029370A1 (ko)
WO (1) WO2019080531A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110103987B (zh) * 2019-05-21 2021-03-19 北京百度网讯科技有限公司 应用于自动驾驶车辆的决策规划方法和装置
CN110287030B (zh) * 2019-06-28 2021-08-20 潍柴动力股份有限公司 内存使用方法和装置
CN111078318B (zh) * 2019-12-18 2023-06-13 Oppo广东移动通信有限公司 配置文件的处理方法、装置、系统及存储介质
CN111444023A (zh) * 2020-04-13 2020-07-24 中国银行股份有限公司 一种数据的处理方法、装置、设备及可读存储介质
CN112988287B (zh) * 2021-03-15 2022-07-08 上海益世界信息技术集团有限公司广州分公司 一种应用程序运行方法及装置
CN113268243B (zh) * 2021-05-11 2024-02-23 网易(杭州)网络有限公司 内存预测方法及装置、存储介质、电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005650A (ja) 2002-05-30 2004-01-08 Hewlett-Packard Development Co Lp 実行中のコンピュータプログラムの性能を向上させる方法
US20100199265A1 (en) 2009-02-05 2010-08-05 Microsoft Corporation Program debugging with dynamically inserted instrumentation
CN104391798A (zh) 2014-12-09 2015-03-04 北京邮电大学 一种软件特征信息的提取方法

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5590332A (en) * 1995-01-13 1996-12-31 Baker; Henry G. Garbage collection, tail recursion and first-class continuations in stack-oriented languages
US6189141B1 (en) * 1998-05-04 2001-02-13 Hewlett-Packard Company Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control
US6351844B1 (en) * 1998-11-05 2002-02-26 Hewlett-Packard Company Method for selecting active code traces for translation in a caching dynamic translator
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US6862729B1 (en) * 2000-04-04 2005-03-01 Microsoft Corporation Profile-driven data layout optimization
US6658652B1 (en) * 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US6971092B1 (en) * 2001-08-24 2005-11-29 Microsoft Corporation System and method for analyzing data accesses of a trace from a computer-executable program to determine data access patterns
US6952821B2 (en) * 2002-08-19 2005-10-04 Hewlett-Packard Development Company, L.P. Method and system for memory management optimization
US7293259B1 (en) * 2003-09-02 2007-11-06 Sun Microsystems, Inc. Dynamically configuring selected methods for instrument-based profiling at application run-time
US7401324B1 (en) * 2003-09-18 2008-07-15 Sun Microsystems, Inc. Method and apparatus for performing time measurements during instrumentation-based profiling
US7293260B1 (en) * 2003-09-26 2007-11-06 Sun Microsystems, Inc. Configuring methods that are likely to be executed for instrument-based profiling at application run-time
US7568192B2 (en) * 2003-09-29 2009-07-28 International Business Machines Corporation Automated scalable and adaptive system for memory analysis via identification of leak root candidates
US8452938B1 (en) * 2004-12-30 2013-05-28 Azul Systems, Inc. Garbage collection with memory quick release
GB0515405D0 (en) * 2005-07-27 2005-08-31 Ibm Memory leak detection
US8099724B2 (en) * 2006-02-28 2012-01-17 Oracle America, Inc. Fast patch-based method calls
US7895579B2 (en) 2006-06-16 2011-02-22 Microsoft Corporation Automated method and system for collecting and reporting API performance profiles
US8494832B2 (en) * 2007-06-20 2013-07-23 Sanjeev Krishnan Method and apparatus for software simulation
US8595446B2 (en) * 2009-11-25 2013-11-26 Oracle America, Inc. System and method for performing dynamic mixed mode read validation in a software transactional memory
US8782614B2 (en) 2011-04-08 2014-07-15 Ca, Inc. Visualization of JVM and cross-JVM call stacks
CN102521089B (zh) * 2011-11-23 2015-01-14 清华大学 硬件设备错误检测方法
US10445229B1 (en) * 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US8972975B1 (en) * 2013-04-01 2015-03-03 Google Inc. Bounded installation time optimization of applications
US20150095603A1 (en) 2013-09-30 2015-04-02 Samsung Electronics Co., Ltd. Method and device for clearing process in electronic device
US10175964B2 (en) * 2014-09-26 2019-01-08 Microsoft Technology Licensing, Llc Compiler caching for runtime routine redundancy tracking
EP3204860A1 (en) 2014-10-07 2017-08-16 Google, Inc. Hardware-assisted memory compression management using page filter and system mmu
CN104407924B (zh) 2014-10-31 2017-11-21 小米科技有限责任公司 内存优化方法及装置
US10228858B1 (en) * 2015-02-11 2019-03-12 Violin Systems Llc System and method for granular deduplication
CN106155646B (zh) * 2015-03-31 2020-01-07 阿里巴巴集团控股有限公司 一种限制外部应用程序调用服务的方法及装置
CN106326137B (zh) 2015-07-02 2020-09-22 腾讯科技(深圳)有限公司 一种内存优化方法、装置及用户设备
CN105511942B (zh) * 2015-12-02 2019-02-19 华为技术有限公司 语言虚拟机中热点中间代码的识别方法以及装置
CN106502785A (zh) 2016-09-30 2017-03-15 维沃移动通信有限公司 一种移动终端的清理内存方法及装置
CN106502876B (zh) * 2016-10-26 2020-01-10 腾讯科技(深圳)有限公司 一种热点函数确定的方法及相关设备
GB201704844D0 (en) * 2017-03-27 2017-05-10 Microsoft Technology Licensing Llc Manual memory management using lazy patching
CN107168848B (zh) * 2017-04-28 2020-06-09 福建星瑞格软件有限公司 一种多线程分析与运行可视化方法
TWI647567B (zh) * 2017-12-13 2019-01-11 國立中正大學 使用記憶體位址定位冷熱存取區間之方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004005650A (ja) 2002-05-30 2004-01-08 Hewlett-Packard Development Co Lp 実行中のコンピュータプログラムの性能を向上させる方法
US20100199265A1 (en) 2009-02-05 2010-08-05 Microsoft Corporation Program debugging with dynamically inserted instrumentation
CN104391798A (zh) 2014-12-09 2015-03-04 北京邮电大学 一种软件特征信息的提取方法

Also Published As

Publication number Publication date
CA3029370A1 (en) 2019-05-02
US20190155641A1 (en) 2019-05-23
CN109710396A (zh) 2019-05-03
WO2019080531A1 (zh) 2019-05-02
US11138034B2 (en) 2021-10-05
BR112019000593A2 (pt) 2019-05-28
CN109710396B (zh) 2023-08-22
KR20190059890A (ko) 2019-05-31
EP3518111A4 (en) 2020-10-07
EP3518111A1 (en) 2019-07-31

Similar Documents

Publication Publication Date Title
KR102205090B1 (ko) 정보를 수집하는 방법 및 장치, 그리고 메모리를 해제하는 방법 및 장치
US9003381B2 (en) Context-specific optimized code
JP6370988B2 (ja) 圧縮されたデータセグメントのキャッシュライン小型化
CN102750174B (zh) 文件加载方法及装置
US20120246390A1 (en) Information processing apparatus, program product, and data writing method
CN107491272B (zh) 一种数据迁移的方法、装置、设备及存储介质
CN110020912B (zh) 页面展示方法、装置及设备
CN108932286B (zh) 一种数据查询方法及装置
CN106095416B (zh) 一种在应用程序中的跳转处理方法、装置及智能终端
WO2014173211A1 (en) Code coverage testing method, device and system
US20190189238A1 (en) Method, Apparatus and Electronic Device For Read/Write Speed Testing
CN104572431A (zh) 一种测试方法及装置
TWI634421B (zh) 用以存取資料之電子裝置及其資料存取方法
CN111241040A (zh) 信息获取方法、装置、电子设备及计算机存储介质
CN114817978A (zh) 数据访问方法及系统、硬件卸载设备、电子设备及介质
CN115934002B (zh) 固态硬盘的访问方法、固态硬盘、存储系统及云服务器
US20120124429A1 (en) Apparatus and method for tracing memory access information
CN110990180B (zh) Tlb异常处理方法、装置、电子设备及储存介质
CN110058938B (zh) 一种内存处理方法、装置、电子设备和可读介质
US10776261B2 (en) Storage apparatus managing system and storage apparatus managing method for increasing data reading speed
CN117369735B (zh) 数据存储方法、电子设备及存储介质
KR100652578B1 (ko) 이동단말기의 메모리 관리 장치 및 방법
CN110032457B (zh) 一种复制粘贴方法和装置
CN110651253A (zh) 内存管理系统、信息处理装置及内存管理方法
CN108255918B (zh) 预读关键词集合的获取方法、网页访问设备及电子设备

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