KR20180097674A - 메모리 리클레임 방법 및 장치 - Google Patents

메모리 리클레임 방법 및 장치 Download PDF

Info

Publication number
KR20180097674A
KR20180097674A KR1020187020861A KR20187020861A KR20180097674A KR 20180097674 A KR20180097674 A KR 20180097674A KR 1020187020861 A KR1020187020861 A KR 1020187020861A KR 20187020861 A KR20187020861 A KR 20187020861A KR 20180097674 A KR20180097674 A KR 20180097674A
Authority
KR
South Korea
Prior art keywords
memory
application
reclaim
memory reclaim
terminal
Prior art date
Application number
KR1020187020861A
Other languages
English (en)
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 KR20180097674A publication Critical patent/KR20180097674A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

본 출원은 컴퓨터 기술 분야에 관한 것으로, 구체적으로는, 메모리 리클레임 방법 및 장치에 관한 것으로서, 적절한 시기에 메모리 리클레임을 수행하지 않음으로써 발생하기 쉬운 어플리케이션 설치의 문제를 해결하기 위한 것이다. 본 출원에서 제공되는 메모리 리클레임 방법은, 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하는 단계; 및 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계를 포함한다.

Description

메모리 리클레임 방법 및 장치
본 출원은 2015년 12월 31일에 중국특허청에 출원된 중국특허출원 제201511032537.7호(명칭: "메모리 리클레임 방법 및 장치")에 대한 우선권을 주장하며, 이 문헌은 전체가 참조로서 여기에 포함된다.
본 출원은 컴퓨터 기술에 관한 것으로서, 구체적으로는 메모리 리클레임 방법 및 장치에 관한 것이다.
제조 비용을 고려하여, 통상 단말 장치의 메모리 용량은 상대적으로 작고, 대부분의 경우, 1-2G이다. 현재, 커널은, 가능한 최대로, 메모리를 신청하기 위한 어플리케이션 프로그램의 요건을 충족한다. 그 결과, 모바일폰과 같은 단말 제품에서, 통상은 충분한 메모리(예컨대, 순간적으로 300MB 내지 500MB를 요구하는 어플리케이션)를 신청하지 못하기 때문에, 상대적으로 큰 메모리를 소비하는 카메라와 같은 어플리케이션이 지연되거나, 심지어 시작 또는 실행 과정에서 그 어플리케이션이 반복적으로 꺼지고 다시 시작한다.
리눅스 시스템의 메모리 리클레임 정책은, 메모리가 불충분할 때 메모리 리클레임을 트리거한다. 예컨대, 어플리케이션이 시작되거나 또는 포어그라운드 인터페이스(foreground interface)로 전환될 때, 사용자 모드의 어플리케이션 프로세스는 커널 모드에게 메모리를 신청하고, 그 어플리케이션이 점유하고자 하는 메모리가 시스템 여유 메모리보다 큰 경우 메모리 리클레임이 트리거된다. 구체적으로, LRU(Least Recently Used) 알고리즘을 사용하여 최근에 가장 낮은 빈도로 사용되는 메모리가 리클레임을 위해 선택된다. 또한, 메모리 리클레임은 메모리 내 압축(in-memory compression), 동일 페이지 머징(same page merging), 메모리 세분화(memory defragment) 등을 이용하여 수행될 수 있다. 안드로이드 시스템은 커널 모드에서 여유 메모리 레벨을 설정함으로써 커널 모드에서 메모리 리클레임을 트리거한다. 예컨대, 메모리가 n1 MB보다 적으면, 우선순위가 가장 낮은 어플리케이션 프로세스가 종료되고, 메모리가 그래도 n2(n1<n2) MB보다 적으면, 우선순위가 한 단계 더 높은 어플리케이션 프로세스가 해제된다.
이상의 두 가지 메모리 리클레임 정책에 따르면, 메모리 리클레임은, 커널 모드에서, 사용 가능한 여유 메모리가 상대적으로 작다는 것을 인식한 때에만 트리거된다. 그러므로, 다음과 같은 일이 발생할 수 있다, 즉, 시스템 내에서 이용률이 상대적으로 낮은 메모리가 적절한 시기에 해제될 수 없다. 메모리 리클레임이, 여유 메모리가 불충분하다는 것을 인식한 후에 트리거되는 경우, 다음과 같은 일이 발생할 수 있다. 즉, 필요한 메모리를 제때에 신청하지 못한 현재 실행 중인 어플리케이션이 지연된다.
본 출원은, 제때에 수행되지 않는 메모리 리클레임에 의해 발생하기 쉬운 어플리케이션 지연(stalling)의 문제를 어느 정도 해결하기 위한, 메모리 리클레임 방법 및 장치를 제공한다.
본 출원은 메모리 리클레임 방법을 제공하고, 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하는 단계; 및 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계를 사용자 모드에서 실행한다.
본 출원에서, 메모리 리클레임은 사용자 모드에서 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 상태 및 메모리 점유 상태를 모니터링함으로써 선행적으로 수행되며, 이로써, 어플리케이션이 사용자에 의해 자주 조작되고 사용되며 또 상대적으로 큰 메모리를 점유하는 때, 메모리 리클레임 빈도가 상승하게 되어, 메모리의 정상적 사용을 보장하게 된다.
일 구현예에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계; 및 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
이 구현예에서는, 먼저 메모리 리클레임 시간 간격이 사용자에 의한 어플리케이션 사용의 정기성(regularity)에 따라 결정되고, 그런 다음 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 따라 선행적으로 메모리 리클레임을 수행한다. 이러한 방식에서는, 계획된 리클레임이 메모리에 대해 수행되므로, 단말 내의 가용 여유 메모리가 상대적으로 바람직한 레벨로 유지될 수 있다.
상술한 구현예에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계의 선택 가능한 방법은, 상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및 상기 적어도 하나의 미리 설정된 시간 세그먼트 각각에 대해, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계를 포함한다.
사용자에 의한 어플리케이션의 조작 및 사용의 빈도는 상이한 시간 세그먼트에 따라 상이하다. 그러므로, 이 방식에서는, 상이한 시간 세그먼트에서는 상이한 메모리 리클레임 시간 간격이 사용될 수 있다. 이것은 또한, 메모리 리클레임 타임라인을 향상시키고, 또한 불필요한 메모리 리클레임 과정의 잦은 실행에 의한 시스템 자원 낭비를 피할 수 있다.
또 다른 구현예에서, 상기 단말에 설치된 어플리케이션의 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
이 방식에서는, 메모리 부족을 어느 정도 피할 수 있다.
또 다른 구현예에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 어플리케이션이 시작되거나 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하는 단계; 및 메모리 리클레임을 수행해야 하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
새롭게 시작된 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션은 통상 사용자가 사용하려는 어플리케이션이고, 이 방식에서는, 새롭게 시작된 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션의 정상적인 실행이 보장되며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 향상시킨다.
또 다른 구현예에서, 상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
또한, 여기서, 백그라운드에서 실행될 수 있는 어플리케이션의 허용 수량은 현재 여유 메모리의 크기에 따라 시간 간격에 설정될 수 있다. 백그라운드에서 실행되는 어플리케이션은 통상 사용자에 의해 현재 사용되는 어플리케이션이 아니기 때문에, 불필요한 과도한 메모리 점유를 이러한 어플리케이션의 수량을 제한함으로써 피할 수 있다.
상술한 구현예에서, 상기 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계의 선택 가능한 방식은, 메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및 메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계를 포함한다.
이 방식에서, 우선순위가 상대적으로 낮은 어플리케이션의 메모리(이 어플리케이션은 통상 사용자에 의해 자주 사용되는 어플리케이션이 아니다)가 우선적으로 리클레임 대상으로 선택된다. 현재 시간은 그 어플리케이션의 고확율 실행 시간 세그먼트 내에 있지 않으며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 향상시킬 수 있다.
상술한 구현예에서, 상기 메모리 리클레임 종료 조건은 다음의 조건:
상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
중 하나 이상을 포함한다.
또한, 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서가 다음의 단계:
어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
에 따라 설정된다.
또 다른 구현예에서, 상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라, 상기 메모리 리클레임 조건이 충족된 것으로 결정되면, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계는, 상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하는 단계를 포함한다.
여기서, 백그라운드에의 체류 기간이 상대적으로 긴 어플리케이션은 통상 현재 구간의 시간 동안 사용자에 의해 조작되지 않는 어플리케이션이고, 어플리케이션의 메모리가 해제됨으로써 메모리가 더 필요한 어플리케이션에 제공되며, 이로써 메모리의 효과적인 이용률을 개선시킬 수 있다.
본 출원은 메모리 리클레임 장치를 제공하며, 이 장치는,
사용자 모드에서, 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하도록 구성된 결정 모듈; 및
상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하도록 구성된 메모리 리클레임 모듈
을 포함한다.
본 출원에서, 메모리 리클레임은 사용자 모드에서 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 상태 및 메모리 점유 상태를 모니터링함으로써 선행적으로 수행되며, 이로써, 어플리케이션이 사용자에 의해 자주 조작되고 사용되며 또 상대적으로 큰 메모리를 점유하는 때, 메모리 리클레임 빈도가 상승하게 되어, 메모리의 정상적 사용을 보장하게 된다.
일 구현예에서, 상기 메모리 리클레임 모듈은 구체적으로,
상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하고, 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
이 구현예에서는, 먼저 메모리 리클레임 시간 간격이 사용자에 의한 어플리케이션 사용의 정기성(regularity)에 따라 결정되고, 그런 다음 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 따라 선행적으로 메모리 리클레임을 수행한다. 이러한 방식에서는, 계획된 리클레임이 메모리에 대해 수행되므로, 단말 내의 가용 여유 메모리가 상대적으로 바람직한 레벨로 유지될 수 있다.
상술한 구현예에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 선택 가능한 방법은, 상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및 상기 적어도 하나의 미리 설정된 시간 세그먼트 각각에 대해, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계를 포함한다.
사용장 의한 어플리케이션의 조작 및 사용의 빈도는 상이한 시간 세그먼트에 따라 상이하다. 그러므로, 이 방식에서는, 상이한 시간 세그먼트에서는 상이한 메모리 리클레임 시간 간격이 사용될 수 있다. 이것은 또한, 메모리 리클레임 타임라인을 향상시키고, 또한 불필요한 메모리 리클레임 과정의 잦은 실행에 의한 시스템 자원 낭비를 피할 수 있다.
또 다른 구현예에서, 메모리 리클레임 모듈은 구체적으로, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
이 방식에서, 메모리 부족을 피할 수 있다.
또 다른 구현예에서, 상기 메모리 리클레임 모듈은 구체적으로,
어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하고, 메모리 리클레임을 수행해야 하는 경우, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
새롭게 시작된 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션은 통상 사용자가 사용하려는 어플리케이션이고, 이 방식에서는, 새롭게 시작된 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션의 정상적인 실행이 보장되며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 향상시킨다.
또 다른 구현예에서, 상기 메모리 리클레임 모듈은 구체적으로, 백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
또한, 여기서, 백그라운드에서 실행될 수 있는 어플리케이션의 허용 수량은 현재 여유 메모리의 크기에 따라 시간 간격에 설정될 수 있다. 백그라운드에서 실행되는 어플리케이션은 통상 사용자에 의해 현재 사용되는 어플리케이션이 아니기 때문에, 불필요한 과도한 메모리 점유를 이러한 어플리케이션의 수량을 제한함으로써 피할 수 있다.
상술한 구현예에서, 상기 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 선택 가능한 방식은, 메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및 메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계를 포함한다.
이 방식에서, 우선순위가 상대적으로 낮은 어플리케이션의 메모리(이 어플리케이션은 통상 사용자에 의해 자주 사용되는 어플리케이션이 아니다)가 우선적으로 리클레임 대상으로 선택된다. 현재 시간은 그 어플리케이션의 고확율 실행 시간 세그먼트 내에 있지 않으며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 향상시킬 수 있다.
상술한 구현예에서, 상기 메모리 리클레임 종료 조건은 다음의 조건:
상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
중 하나 이상을 포함한다.
또한, 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서가 다음의 단계:
어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
에 따라 설정된다.
또, 상기 메모리 리클레임 모듈은 구체적으로,
어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및 각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -에 따라 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서를 설정하도록 구성된다.
또 다른 구현예에서, 상기 메모리 리클레임 모듈은 구체적으로, 상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하도록 구성된다.
본 출원은 사용자 장비를 제공하고, 이 사용자 장비는, 프로세서, 메모리 및 버스를 포함한다. 이 메모리는 실행 명령을 저장하고 또 내부 메모리 장치 및 외부 메모리 장치를 포함한다. 내부 메모리 장치는 또한 내부 메모리라고도 하며, 프로세서의 동작 데이터 및 하드 디스크와 같은 외부 메모리와 교환되는 데이터를 일시 저장하도록 구성된다. 프로세서는 내부 메모리 장치를 이용하여 외부 메모리와 데이터를 교환하고, 사용자 장비가 실행되는 때, 프로세서 및 메모리는 버스를 이용하여 서로 통신함으로써, 프로세서가 이하의 명령을 사용자 모드에서 실행한다:
단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하는 단계; 및
상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계.
본 출원에서, 메모리 리클레임은 사용자 모드에서 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 상태 및 메모리 점유 상태를 모니터링함으로써 선행적으로 수행되며, 이로써, 어플리케이션이 사용자에 의해 자주 조작되고 사용되며 또 상대적으로 큰 메모리를 점유하는 때, 메모리 리클레임 빈도가 상승하게 되어, 메모리의 정상적 사용을 보장하게 된다.
일 구현예에서, 프로세스에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계; 및 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
이 구현예에서는, 먼저 메모리 리클레임 시간 간격이 사용자에 의한 어플리케이션 사용의 정기성(regularity)에 따라 결정되고, 그런 다음 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 따라 선행적으로 메모리 리클레임을 수행한다. 이러한 방식에서는, 계획된 리클레임이 메모리에 대해 수행되므로, 단말 내의 가용 여유 메모리가 상대적으로 바람직한 레벨로 유지될 수 있다.
상술한 구현예에서, 프로세서에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계의 선택 가능한 방법은, 상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및 상기 적어도 하나의 미리 설정된 시간 세그먼트 각각에 대해, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계를 포함한다.
사용장 의한 어플리케이션의 조작 및 사용의 빈도는 상이한 시간 세그먼트에 따라 상이하다. 그러므로, 이 방식에서는, 상이한 시간 세그먼트에서는 상이한 메모리 리클레임 시간 간격이 사용될 수 있다. 이것은 또한, 메모리 리클레임 타임라인을 향상시키고, 또한 불필요한 메모리 리클레임 과정의 잦은 실행에 의한 시스템 자원 낭비를 피할 수 있다.
또 다른 구현예에서, 프로세서에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
이 방식에서는, 메모리 부족을 어느 정도 피할 수 있다.
또 다른 구현예에서, 프로세서에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 어플리케이션이 시작되거나 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하는 단계; 및 메모리 리클레임을 수행해야 하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
새롭게 시작된 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션은 통상 사용자가 사용하려는 어플리케이션이고, 이 방식에서는, 새롭게 시작된 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션의 정상적인 실행이 보장되며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 향상시킨다.
또 다른 구현예에서, 프로세서에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
또한, 여기서, 백그라운드에서 실행될 수 있는 어플리케이션의 허용 수량은 현재 여유 메모리의 크기에 따라 시간 간격에 설정될 수 있다. 백그라운드에서 실행되는 어플리케이션은 통상 사용자에 의해 현재 사용되는 어플리케이션이 아니기 때문에, 불필요한 과도한 메모리 점유를 이러한 어플리케이션의 수량을 제한함으로써 피할 수 있다.
상술한 구현예에서, 프로세서에 의해 실행되는 명령에서, 상기 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계의 선택 가능한 방식은, 메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및 메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계를 포함한다.
이 방식에서, 우선순위가 상대적으로 낮은 어플리케이션의 메모리(이 어플리케이션은 통상 사용자에 의해 자주 사용되는 어플리케이션이 아니다)가 우선적으로 리클레임 대상으로 선택된다. 현재 시간은 그 어플리케이션의 고확율 실행 시간 세그먼트 내에 있지 않으며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 향상시킬 수 있다.
상술한 구현예에서, 상기 메모리 리클레임 종료 조건은 다음의 조건:
상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
중 하나 이상을 포함한다.
또한, 프로세서에 의해 실행되는 명령에서, 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서가 다음의 단계:
어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
에 따라 설정된다.
또 다른 구현예에서, 프로세서에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라, 상기 메모리 리클레임 조건이 충족된 것으로 결정되면, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계는, 상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하는 단계를 포함한다.
여기서, 백그라운드에의 체류 기간이 상대적으로 긴 어플리케이션은 통상 현재 구간의 시간 동안 사용자에 의해 조작되지 않는 어플리케이션이고, 어플리케이션의 메모리가 해제됨으로써 메모리가 더 필요한 어플리케이션에 제공되며, 이로써 메모리의 효과적인 이용률을 개선시킬 수 있다.
도 1은 본 출원에 따른 메모리 리클레임의 개략 모식도이다.
도 2는 본 출원의 실시예 1에 따른 메모리 리클레임 방법의 흐름도이다.
도 3은 본 출원의 실시예 2에 따른 메모리 리클레임 방법의 흐름도이다.
도 4는 본 출원의 실시예 3에 따른 메모리 리클레임 방법의 흐름도이다.
도 5는 본 출원의 실시예에 따른 메모리 리클레임 장치(50)의 개략 구성도이다.
도 6은 본 출원의 실시예에 따른 사용자 장비(60)의 개략 구성도이다.
도 7은 본 출원에 따른 단말 장치(700)의 개략 구성도이다.
도 8은 본 출원의 실시예에 따른 단말(800)의 개략 구성도이다.
도 1을 참조하면, 도 1은 본 출원에 따른 메모리 리클레임의 개략 모식도이다. 본 출원에서, 메모리 리클레임은, 커널 모드에 의해 제공된 메모리 리클레임 인터페이스를 사용하여 그리고 메모리 리클레임 정책을 사용자 모드에서 실행함으로써 수행된다. 구체적으로, 메모리 리클레임은 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링함으로써 트리거된다. 메모리 리클레임 조건이 충족된 후, 메모리 리클레임을 해야 할 어플리케이션이, 단말에서 현재 실행 중인 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라, 단말에서 현재 실행 중인 어플리케이션으로부터 선택되고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 사용자 모드로 호출함으로써 메모리 리클레임이 수행된다. 본 출원에서는, 사용자 모드에서, 어플리케이션의 메모리 점유 정보, 및 사용자 조작 및 사용 정보를 모니터링하는 것에 의해 선행적으로 수행됨으로써, 어플리케이션이 사용자에 의해 자주 조작되고 사용되며 상대적으로 큰 메모리를 점유하는 경우, 메모리 리클레임 빈도가 상승하고 적시의 메모리 리클레임을 보장한다.
이하에서는 본 출원의 첨부 도면을 참조하여 본 출원의 실시예들을 더 상세히 설명한다.
실시예 1
도 2를 참조하면, 도 2는 본 출원의 실시예 1에 따른 메모리 리클레임 방법의 흐름도이고, 이 방법은 사용자 모드에서 다음 단계를 실행한다.
S201: 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링한다.
여기서, 메모리 점유 정보는, 어플리케이션이 실행된 때 점유되는 메모리의 크기를 포함하고, 어플리케이션의 사용자 조작 및 사용 정보는, 사용자에 의한 어플리케이션의 사용 빈도, 사용 시간 세그먼트, 사용 기간 등을 포함한다.
구체적인 구현예에서, 단말 시스템 내에서의 각 어플리케이션의 실행 상태 및 그 어플리케이션이 실행되는 때 차지하는 메모리의 크기는, 사용자 모드에서 모니터링 프로세스를 이용하여 실시간으로 모니터링될 수 있다. 사용자에 의한 어플리케이션의 사용 빈도, 사용 시간 세그먼트, 사용 기간 등은 모니터링에 의해 획득된 어플리케이션의 실행 상태를 이용하여 결정될 수 있다. 여기서, 사용자가 어플리케이션을 사용하는 사용 시간 세그먼트는 복수의 미리 설정된 시간 세그먼트 중 사용자가 그 어플리케이션을 사용한 시간 세그먼트이거나, 또는 사용자가 어플리케이션을 조작하기 시작한 순간으로부터 사용자가 어플리케이션 조작을 마친 순간까지의 실제 시간 세그먼트일 수 있다.
여기서, 단말 시스템 상의 각 어플리케이션의 실행 상태를 모티터링하는 것은, 어플리케이션 시작 상태, 어플리케이션 종료 상태, 어플리케이션을 백그라운드에서 포어그라운드 인터페이스로 전환하는 상태, 포어그라운드 인터페이스에서 백그라운드로 전환하는 상태 등을 포함할 수 있다. 모니터링 프로세스는, 구체적으로, 질의(query)를 이용하여, 프록 파일 시스템(proc file system)에 의해 제공되는 질의 인터페이스를 이용하여 어플리케이션의 상술한 실행 상태를 획득할 수 있다.
구체적인 구현예에서, 상이한 어플리케이션에 대해, 어플리케이션의 사용자 조작 및 사용 정보에 대한 통계를 수집하는 방식이 상이할 수 있다. 예컨대, 사용자에 의해 포어그라운드 인터페이스에서 조작되어야 하는 애플리케이션(예컨대, 위채(WeChat) 또는 캘린더(Calendar))에 대해, 어플리케이션이 시작하거나 포어그라운드 인터페이스로 전환되는 시간을 사용자가 그 어플리케이션을 조작하기 시작한 시간으로 사용할 수 있고, 어플리케이션이 종료되거나 실행을 위한 백그라운드로 전환되는 시간을 사용자가 그 어플리케이션의 조작을 마친 시간으로 사용할 수 있다. 포어그라운드 인터페이스에서 사용자가 항상 조작해야 하는 것이 아닌 애플리케이션(예컨대, 다운 로딩 소프트웨 대해, 어플리케이션이 시작되는 시간을 사용자가 어플리케이션을 조작하기 시작한 시간으로 사용할 수 있고, 어플리케이션이 종료되는 시간을 사용자가 그 어플리케이션의 조작을 마친 시간으로 사용할 수 있다. 사용자가 어플리케이션을 사용하는 사용 빈도, 사용 시간 세그먼트, 사용 기간 등은, 통계치 수집에 의해 획득되는, 사용자가 어플리케이션을 조작하기 시작한 시간과 사용자가 어플리케이션 조작을 종료한 시간에 따라 결정될 수 있다.
S202: 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족되었는지를 결정하고, 메모리 리클레임 조건이 현재 충족되었으면 단계 S203으로 하거나, 또는 메모리 리클레임 조건이 현재 충족되지 않았으면 단계 S201로 돌아간다.
구체적인 구현예에서, 사용자 모드에서 메모리 리클레임을 트리거하는 조건은 실제 요건에 따라 설정될 수 있다. 예컨대, 메모리 리클레임 시간 간격은, 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라 결정될 수 있고, 메모리 리클레임은, 미리 설정된 메모리 리크레임 시간 간격에 따라, 계획된 메모리 리클레임을 실행하도록 트리거되고, 이로써 단말 내에서 가용한 여유 메모리가 상대적으로 양호한 레벨로 유지된다. 여기서, 하나 이상의 미리 설정된 메모리 리클레임 시간 간격이 있을 수 있다. 예컨대, 사용자가 하루 전체에서 어플리케이션을 사용한 사용 빈도 및 메모리 점유 모두가 상대적으로 안정적일 때는, 하나의 메모리 리클레임 시간 간격만이 설정될 수 있다. 다르게는, 사용자가 하루 동안 오직 하나의 시간 세그먼트에서 어플리케이션을 집중적으로 사용했고, 어플리케이션을 사용하는 빈도가 안정적이라면, 메모리 리클레임 시간 간격은 이 시간 세그먼트에서만 설정될 수 있고, 다른 시간 세그먼트에서는 메모리 리클레임이 수행되지 않는다. 사용자가 어플리케이션을 사용하는 빈도가 하루 중 상이한 시간 세그먼트에서 크게 변하는 경우, 시스템 여유 메모리가 임계치보다 작은 때 메모리 리클레임이 트리거되거나(메모리 리클레임은 단말에 설치된 어플리케이션의 메모리 점유 정보에 따라 트리거된다); 어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출된 때, 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라 메모리 리클레임이 트리거되거나(메모리 리클레임은 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라 트리거된다); 또는 단말의 어플리케이션이 백그라운드에 체류하는 기간이 소정의 기간을 초과한 것을 검출한 때, 메모리 리클레임이 트리거된다(메모리 리클레임은, 어플리케이션의 사용자 조작 및 사용 정보에 따라 트리거된다).
S203: 단말에서 현재 실행 중에 어플리케이션의 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 단말에서 현재 실행 중인 어플리케이션 중에서, 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하는 것에 의해 메모리 리클레임을 수행한다.
여기서, 단계 S201 및 S202에서의 단말에 설치된 어플리케이션은 단계 S203에서의 단말에서 현재 실행 중인 어플리케이션을 포함한다. 단계 S203에서의 단말에서 현재 실행 중인 어플리케이션에 더하여, 단말에 설치된 어플리케이션은 현재 종료 상태인 어플리케이션을 더 포함한다.
구체적인 구현예에서, 커널 모드에서의 메모리 리클레임 프로그램은, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 이용하여 사용자 모드에서 메모리 리클레임을 실행하기 위해 호출된다. 메모리 리클레임 인터페이스는 linux procfs 파일 시스템 또는 linux sysfs 파일 시스템과 같은 시스템에 기초하여 구현된다.
리눅스 시스템에서, 커널 모드에서의 기존의 메모리 리클레임 매니지먼트는 LRU 알고리즘에 기초하여 구현된다. 기존의 메모리 리클레임 매니지먼트에서는, 어플리케이션에 의해 점유되는 메모리가 2개의 메인 형태: 어나니머스 페이지(anonymous page)(다이내믹 메모리 할당(malloc) 기능에 의해 할당된 메모리와 같은), 및 파일 페이지(fine page)(파일의 판독 및 기록 중에 할당된 메모리와 같은)로 나누어진다. LRU 알고리즘에 따라 최근에 자주 사용되지 않은 메모리는 링크드 리스트(linked list)에 들어가고, 이 링크드 리스트는 리클레임이 수행될 때마다 줄어들어 메모리 페이지(이것은 주로 페이지 캐시(page cache)임)의 일부를 리클레임한다. 커널 모드에서 메모리 리클레임에 사용되는 기본 함수는 try_to_free_pages()이다. 본 출원에서, 함수의 인터페이스는 호출을 위해 사용자 모드에 노출되어 있다. 사용자 모드에서는, 이 출원에서 제공하는 메모리 리클레임 정책에 기초하여 그리고 함수의 인터페이스를 호출하여 구현된다.
실시예 2
이하에서는 본 출원의 바람직한 구현예를 설명하고, 이는 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 대한 통계치를 수집함으로써 메모리 리클레임 시간 간격을 결정하는 단계, 및 결정된 메모리 리클레임 시간 간격에 기초하여 메모리 리클레임을 수행하는 단계를 포함한다.
도 3을 참조하면, 도 3은 본 출원의 실시예 2에 따른 메모리 리클레임 방법의 흐름도이고, 이 방법은 다음 단계를 사용자 모드에서 실행한다.
S301: 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보를 모니터링한다.
구체적인 구현예에서, 사용자가 어플리케이션을 사용하는 사용 빈도 및 사용 시간 세그먼트와 같은, 어플리케이션의 사용자 조작 및 사용 정보, 그리고 어플리케이션이 실행되는 때 점유되는 메모리의 크기와 같은 메모리 점유 정보에 관한 통계치가 실시간으로 사용자 모드에서 단말 시스템의 각 어플리케이션의 실행 상태를 모니터링함으로써 수집된다.
S302: 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정한다.
여기서, 메모리 리클레임 시간 간격은 단계 S301에서 통계치 수집에 의해 획득된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라 결정될 수 있다. 하나 이상의 메모리 리클레임 시간 간격이 있을 수 있다. 예컨대, 하루 중 사용자가 어플리케이션을 사용하는 사용 빈도 및 메모리 점유가 상대적으로 일정한 경우, 오직 하나의 메모리 리클레임 시간 간격이 설정될 수 있다. 사용자가 어플리케이션을 사용하는 사용 빈도가 하루 중 상이한 시간 세그먼트에서 상이한 경우, 하루 중 상이한 시간 세그먼트에서 상이한 메모리 리클레임 시간 간격이 사용될 수 있다. 예컨대, 어플리케이션이 자주 사용되고 상대적으로 큰 메모리가 점유되는 시간 세그먼트에서 더 자주 메모리 리클레임이 수행될 수 있다. 반대로, 어플리케이션이 자주 사용되지 않고 상대적으로 작은 메모리가 점유되는 시간 세그먼트에서는 메모리 리클레임을 덜 자주 수행할 수 있다.
구체적인 구현예에서, 복수의 시간 세그먼트가 경험에 따라 미리 설정될 수 있다. 미리 설정된 시간 세그먼트에서, 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보, 및 메모리 점유 정보가 결정된다. 각각의 미리 설정된 시간 세그먼트에서 메모리 리클레임 시간 간격은, 미리 설정된 시간 세그먼트에서의, 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라 결정된다.
예컨대, 하루를 단위로 사용하고, 여러 시간 세그먼트로서 9:00-17:00, 17:00-23:00 및 23:00-9:00이 미리 설정된다. 어플리케이션의, 여러 미리 설정된 시간 세그먼트에서의, 사용자 조작 및 사용 정보 및 메모리 점유 정보에 대한 통계치가 각각 수집된다. 예컨대, 시간 세그먼트 17:00-23:00에서, 사용자는 어플리케이션을 더 자주 사용하고, 그 어플리케이션에 의해 점유된 메모리의 크기 또한 가장 크며, 이 시간 세그먼트에서의 메모리 리클레임 시간 간격은 0.5시간으로 설정될 수 있다. 시간 세그먼트 9:00-17:00에서, 사용자가 어플리케이션을 사용하는 빈도는 중간 정도이고, 점유된 메모리의 크기 또한 중간 정도이며, 이 시간 세그먼트에서의 메모리 리클레임 시간 간격은 1시간으로 설정될 수 있다. 시간 세그먼트 23:00-9:00에서, 사용자는 어플리케이션을 가장 덜 사용하고, 점유된 메모리의 크기 또한 가장 작으며, 이 시간 세그먼트에서의 메모리 리클레임 시간 간격은 3시간으로 설정될 수 있다. 다른 예에서, 일주일 중 업무일과 비업무일에서의 어플리케이션 사용 통계치 간의 차이를 더 고려하여, 업무일과 비업무일에 대해 각각 상이한 메모리 리클레임 시간 간격을 설정한다. 예컨대, 토요일과 일요일에 사용자가 어플리케이션을 사용하는 빈도가 업무일에 그 어플리케이션을 사용하는 빈도보다 현저히 더 높다. 이상의 메모리 리클레임 시간 간격은 물론 월요일-금요일에 사용될 수 있고, 토요일과 일요일에 메모리 리클레임 빈도는 증가한다. 예컨대, 시간 세그먼트 9:00-17:00, 17:00-23:00 및 23:00-9:00에서의 상술한 메모리 리클레임 시간 간격은 각각 토요일 및 일요일에 절반으로 된다. 즉, 시간 세그먼트 17:00-23:00에서의 메모리 리클레임 시간 간격은 0.25시간으로 설정되고, 시간 세그먼트 9:00-17:00에서의 메모리 리클레임 시간 간격은 0.5시간으로 설정되며, 시간 세그먼트 23:00-9:00에서의 메모리 리클레임 시간 간격은 1.5시간으로 설정된다.
S303: 메모리 리클레임 시간 간격에 따라, 현재 메모리 리클레임을 수행할 필요가 있다고 결정되면, 단말에서 현재 실행 중인 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라, 단말에서 현재 실행 중인 어플리케이션 중에서, 메모리 리클레임을 해야 할 어플리케이션을 결정한다. 여기서, 사용자가 정상적으로 어플리케이션을 사용하고 있다는 것을 확실히 하기 위해, 사용자에 의해 현재 사용되는 어플리케이션에 대해서는 메모리 리클레임을 고려하지 않는다. 사용자가 현재 사용하는 어플리케이션은 포어그라운드 어플리케이션을 포함할 수 있고, 또는 파일 다운로딩과 같은 백그라운드에서 실행되는 어플리케이션을 포함할 수도 있다.
S304: 커널 모드가 제공하는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행한다.
구체적인 구현예에서, 결정된 메모리 리클레임 시간 간격에 따라 메모리 리클레임 시간에 도달한 것으로 결정되면, 현재 시간이, 통계치 수집에 의해 획득된, 사용자가 어플리케이션을 사용할 가능성이 상대적으로 높은 시간 범위 내에 있지 않다면, 단말에서 현재 실행 중인 어플리케이션으로서 사용자가 사용하거나 조작하지 않는 어플리케이션의 메모리가 리클레임된다. 이러한 방식으로, 메모리 리클레임 종료 조건이 충족될 때까지 메모리 리클레임 대상 어플리케이션이 성공적으로 선택된다.
일 구현예에서, 메모리 리클레임을 현재 수행할 필요가 있다고 결정된 후, 현재 단말에서 실행 중이며 또한 사용자에 의해 조작되지 않는 어플리케이션이 메모리 리클레임을 해야 할 어플리케이션들의 미리 저장된 우선순위 순서에 따라 선택될 수 있다. 현재 시간이 선택된 어플리케이션의 사용 가능성이 높은 시간 세그먼트(즉, 어플리케이션의 사용자 조작 및 사용 확률이 상대적으로 높은 시간 세그먼트) 내에 있는지는, 어플리케이션의 사용자 조작 및 사용 정보(예컨대, 사용자가 어플리케이션을 12:00~13:00에 5일 연속으로 사용하면, 12:00~13:00는 해당 어플리케이션의 고확률 실행 시간 세그먼트이다)에 기초하여 결정된다. 현재 시간이 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 선택된 어플리케이션이 메모리 리클레임을 할 어플리케이션인 것으로 결정된다. 상술한 단계들은 메모리 리클레임 종료 조건이 충족될 때까지 반복된다. 여기서, 메모리 리클레임 종료 조건은 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 것을 포함할 수 있다.
우선순위 순서는 상이한 어플리케이션 그룹 간의 우선순위 순서일 수 있다. 구체적으로, 단말에 설치된 어플리케이션들은 어플리케이션들의 사용 빈도에 따라 그룹화될 수 있고, 동일 그룹의 어플리케이션들은 동일한 사용 빈도 범위를 가진다. 각 그룹의 어플리케이션들의 메모리 리클레임 우선순위 순서는, 각 그룹에 대응하는 사용 빈도 범위에 따라 결정되고, 동일 그룹의 어플리케이션들은 동일한 우선순위 순서를 가진다. 예컨대, UI(User Interface)와 같은 몇몇 어플리케이션들은 단말 내에서 오퍼레이팅 시스템의 핵심 요소와 관련될 수 있고, 이런 유형의 어플리케이션은 그룹 1에 분류될 수 있으며, 그룹 1은 매우 중요한 어플리케이션을 나타낸다. 위챗 및 카메라와 같이 사용자가 자주 사용하는 몇몇 어플리케이션에 대해, 이러한 유형의 어플리케이션은 그룹 2에 분류될 수 있는데, 그룹 2는 대체로 중요한 어플리케이션을 나타낸다. 계산기 및 주식과 같은 자주 사용되지 않는 몇몇 어플리케이션에 대해, 이러한 유형의 어플리케이션은 그룹 3으로 분류될 수 있고, 그룹 3은 중요하지 않은 어플리케이션을 나타낸다. 그룹 3의 메모리 리클레임 우선순위 > 그룹 2의 메모리 리클레임 우선순위 > 그룹 1의 메모리 리클레임 우선순위와 같이 설정된다. 메모리 리클레임 동안, 그룹 3의 어플리케이션의 메모리 리클레임이 가장 우선시되고, 그룹 2의 어플리케이션의 메모리 리클레임이 두 번째로 우선시되며, 그룹 1의 어플리케이션의 메모리는 리클레임되지 않는다.
실시예 3
적시에 적절한 메모리 리클레임을 보장하기 위해 메모리 리클레임 정책을 더욱 최적화하기 위해, 본 출원의 실시예는 추가로 복수의 메모리 리클레임 조건을 이용하여 메모리 리클레임을 수행하는 실시예를 제공한다.
도 4를 참조하면, 도 4는 사용자 모드에서 다음 단계를 수행하는 방법으로서, 본 출원의 실시예 3에 따른 메모리 리클레임 방법의 흐름도이다.
S401: 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보를 모니터링한다.
S402: 단말에 설치된 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정한다.
S403: 다음의 조건 1 내지 4 중 어느 하나 또는 그 이상이 충족되는 때 S404의 메모리 리클레임 절차를 트리거하고, 조건 5가 충족되는 때에는 S405의 메모리 리클레임 절차를 트리거한다.
1. 메모리 리클레임 시간 간격에 따라, 현재 메모리 리클레임을 수행해야 하는 것으로 결정된다.
구체적인 구현예에서, 현재 메모리 리클레임을 수행해야 하는지 여부는 시스템 여유 메모리를 참조하여 결정될 수 있다. 즉, 메모리 리클레임 시간 간격이 나타내는 메모리 리클레임 시간이 현재 도달한 때, 시스템 여유 메모리가 임계치(이 임계치는 이하에서 설명하는 소정의 제1 임계치, 소정의 제2 임계치 또는 다른 임계치일 수 있고, 상기 다른 임계치는 제1 임계치 및 제2 임계치 사이의 임계치일 수 있으며, 제1 임계치는 제2 임계치보다 작다)보다 작으면 수행될 수 있다.
2. 시스템 여유 메모리가 소정의 제1 임계치보다 작은 것으로 결정된다.
3. 어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출된 때, 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 현재 메모리 리클레임을 수행해야 하는 것으로 결정된다.
여기서, 새롭게 시작되거나 포어그라운드 인터페이스로 전환된 어플리케이션이 요구한 메모리의 크기가 시스템 여유 메모리보다 큰 경우, 메모리 리클레임이 트리거된다.
4. 백그라운드에서 실행 중인 어플리케이션의 수 M이 현재 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 개수 N보다 크다.
구체적인 구현예에서, 백그라운드에서 실행될 수 있는 어플리케이션의 허용 개수는 현재 시스템 여유 메모리의 크기에 따라 설정될 수 있다.
5. 단말의 어플리케이션에 의해, 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출된다.
상술한 조건 2-5에 대해서는, 통상의 기술자라면 실제 요건에 따라 조건의 일부만을 선택할 수도 있다.
S404: 단말에서 현재 실행 중인 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라, 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션 중에서, 메모리 리클레임을 할 어플리케이션을 결정하고, 커널 모드가 제공하는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행한다.
구체적인 구현예에서, 단말 시스템이 시작된 후, 본 출원의 사용자 모드에서 메모리 클레임에 사용하기 위한 데몬(daemon)이 먼저 시작되고, 그런 다음 어플리케이션이 시작되며, 이하의 표 1에서와 같이, 어플리케이션 실행 데이터 표를 유지함으로써 단말에서 어플리케이션의 메모리 점유 상태를 기록하고 고확률 실행 시간 세그먼트에 대한 통계를 수집한다.
어플리케이션 점유된 메모리 고확률 실행 시간 세그먼트
App 1 x1KB T1-T2
App 2 x2KB T3-T4
App 3 x3KB T5-T6
App 4 x4KB T7-T8
... ... ...
메모리 리클레임을 수행해야 하는 경우, 단말에서 현재 실행 중인 어플리케이션이 메모리 리클레임을 할 어플리케이션의 미리 저장된 우선순위 순서에 따라 선택될 수 있다. 표 1을 참조하면, 현재 시간이 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있는지 결정한다. 현재 시간이 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 선택된 어플리케이션이 메모리 리클레임을 할 어플리케이션으로서 사용되고, 커널 모드에 의해 제공되고 메모리 리클레임에 사용되는 메모리 리클레임 인터페이스를 호출하는 것에 의해 메모리 리클레임을 수행하고, 상술한 단계들은 메모리 리클레임 종료 조건이 충족될 때까지 반복된다. 여기서, 조건 1 내지 4 간의 차이에 기초하여, 상술한 메모리 리클레임 종료 조건은, 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우; 현재 시작된 어플리케이션이 요구하는 메모리가 시스템 여유 메모리보다 작은 경우; 포어그라운드 인터페이스로 전환된 어플리케이션에 의해 요구되는 메모리가 시스템 여유 메모리보다 작은 경우, 또는 백그라운드에서 실행 중인 어플리케이션의 수가 백그라운드에서 실행 가능한 어플리케이션의 소정의 허용 개수와 같거나 그보다 작은 경우, 중 하나 이상을 포함할 수 있다. 예컨대, 조건 1 및 2에 대해, 메모리 리클레임 종료 조건은 시스템 여유 메모리의 크기가 소정의 제2 임계치(소정의 제2 임계치는 소정의 제1 임계치보다 더 크다)보다 더 큰 경우일 수 있고; 조건 3에 대해, 메모리 리클레임 종료 조건은 현재 시작된 어플리케이션에 의해 요구되는 메모리가 시스템 여유 메모리보다 작은 경우일 수 있으며; 조건 4에 대해, 메모리 리클레임 종료 조건은 백그라운드에서 실행 중인 어플리케이션의 수가 백그라운드에서 실행 가능한 어플리케이션의 소정의 허용 개수와 같은 경우일 수 있다. 즉, 단계 S303에서, 메모리 리클레임을 해야 할 M-N개의 어플리케이션이 백그라운드에서 실행 중인 어플리케이션으로부터 선택된다.
S405: 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과하는 어플리케이션의 메모리를 리클레임한다.
동일한 기술적 사상에 기초하여, 본 출원은 메모리 리클레임 방법에 대응하는 메모리 리클레임 장치 및 사용자 장비를 제공한다. 문제를 해결하기 위한 이 장치 및 사용자 장비의 원리는 본 출원에서의 메모리 리클레임 방법과 유사하기 때문에, 이 장치 및 사용자 장비의 구현예에 대해, 방법의 구현예를 참고할 수 있다. 반복되는 부분은 다시 설명하지 않는다.
실시예 4
도 5를 참조하면, 도 5는 본 출원의 실시예에 따른 메모리 리클레임 장치(50)의 개략 구성도이고, 메모리 리클레임 장치(50)는:
사용자 모드에서, 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하도록 구성된 결정 모듈(51); 및
상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하도록 구성된 메모리 리클레임 모듈(52)
을 포함한다.
본 출원에서, 메모리 리클레임은, 사용자 모드에서, 단말에 설치된 어플리케이션의 사용자 조작 및 사용 상태 및 메모리 점유 상태를 모니터링함으로써 선제적으로 수행되고, 이로써 어플리케이션이 사용자에 의해 자주 조작되고 사용되며 큰 메모리를 점유하는 경우, 메모리 리클레임 빈도가 증가하여 메모리의 정상적 사용을 보장한다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로,
상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하고, 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
본 구현예에서, 메모리 리클레임 모듈(52)은 먼저, 사용자의 어플리케이션 사용의 정기성에 따라 메모리 리클레임 시간 간격을 결정하고, 그런 다음 메모리 리클레임 시간 간격이 나타내는 메모리 리클레임 시간에 따라 메모리 리클레임을 적극적으로 수행한다. 이 방식으로, 계획된 리클레임이 메모리에 대해 수행되고, 이로서 단말 내의 가용한 여유 메모리가 상대적으로 적절한 레벨로 유지될 수 있다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로, 다음의 단계:
상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및
상기 적어도 하나의 미리 설정된 시간 세그먼트 각각 동안, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계
에 따라 메모리 리클레임 시간 간격을 결정하도록 구성된다.
사용자가 어플리케이션을 조작하고 사용하는 빈도는, 상이한 시간 세그먼트에서 서로 다르다. 그러므로, 이 방식에서, 상이한 시간 세그먼트에서는 상이한 메모리 리클레임 시간 간격이 사용될 수 있다. 이것은 메모리 리클레임 적시성을 더욱 향상시키고, 또한 불필요한 메모리 리클레임 절차의 잦은 실행으로 인해 야기되는 시스템 자원 낭비를 피할 수 있다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
이 방식에서는, 메모리 불충분을 어느 정도 피할 수 있다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로,
어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하고,
메모리 리클레임을 수행해야 하는 경우, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
새롭게 시작한 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션은 통상 사용자가 막 사용하려는 어플리케이션이고, 이 방식에서, 새롭게 시작한 어플리케이션 또는 포어그라운드 인터페이스로 전환된 어플리케이션의 정상적인 실행이 보장되며, 이로써 시스템 퍼포먼스를 향상시키고 사용자 경험을 개선시킬 수 있다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로,
백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
또한, 여기서, 백그라운드에서 실행이 허가된 어플리케이션의 수는 현재 여유 메모리의 크기에 따라 시간 간격에 대해 설정될 수 있다. 백그라운드에서 실행 중인 어플리케이션은 통상 사용자가 현재 사용하는 어플리케이션이 아니기 때문에, 이들 어플리케이션의 수를 제한함으로써 메모리의 과도한 불필요한 점유를 피할 수 있다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로,
메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및
메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계
에 따라 메모리 리클레임을 수행하도록 구성된다.
이 방식에서, 우선순위가 상대적으로 낮은 어플리케이션의 메모리(이 어플리케이션은 통상 사용자가 자주 사용하는 어플리케이션이 아니다)는 리클레임 대상으로서 우선적으로 선택된다. 여기서 현재 시간은 해당 어플리케이션의 고확률 실행 시간 세그먼트 내에 있지 않으며, 이로써 시스템 퍼포먼스는 향상되고 사용자 경험은 개선된다.
선택적으로, 메모리 리클레임 종료 조건은 다음의 조건:
상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
중 하나 이상을 포함한다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로,
어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
에 따라 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서를 설정하도록 구성된다.
선택적으로, 메모리 리클레임 모듈(52)은 구체적으로,
상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하도록 구성된다.
여기서, 백그라운드에 체류하는 기간이 상대적으로 긴 어플리케이션은 통상 현 기간 동안 사용자가 조작하지 않은 어플리케이션이고, 이 어플리케이션의 메모리는 해제되어 메모리를 더욱 필요로 하는 어플리케이션에 제공되며, 이로서 메모리의 효과적인 이용율을 향상시킬 수 있다.
실시예 5
도 6을 참조하면, 도 6은 본 출원의 실시예에 따른 사용자 장비(60)의 개략 구성도이고, 사용자 장비(60)는 프로세서(61), 메모리(62) 및 버스(63)를 포함한다. 메모리(62)는 실행 명령을 저장하도록 구성되고, 내부 메모리 장치(621) 및 외부 메모리 장치(622)를 포함한다. 여기서, 내부 메모리 장치(621)는 내부 메모리라고도 하고, 프로세서(61)의 동작 데이터 및 하드 디스크와 같은 외부 메모리(622)와 교환되는 데이터를 일시 저장하도록 구성된다. 프로세서(61)는 내부 메모리 장치(621)를 이용하여 외부 메모리(622)와 데이터를 교환하고, 사용자 장비(60)가 실행되는 때, 프로세서(61) 및 메모리(62)는 버스(63)를 이용하여 서로 통신함으로써, 프로세서(61)가 이하의 명령을 사용자 모드에서 실행한다:
단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하는 단계; 및 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계.
선택적으로, 프로세스(61)에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계; 및 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
선택적으로, 프로세서(61)에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계의 선택 가능한 방법은, 상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및 상기 적어도 하나의 미리 설정된 시간 세그먼트 각각에 대해, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계를 포함한다.
선택적으로, 프로세서(61)에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
선택적으로, 프로세서(61)에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 어플리케이션이 시작되거나 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하는 단계; 및 메모리 리클레임을 수행해야 하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
선택적으로, 프로세서(61)에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은, 백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함한다.
또한, 여기서, 백그라운드에서 실행될 수 있는 어플리케이션의 허용 수량은 현재 여유 메모리의 크기에 따라 시간 간격에 설정될 수 있다. 백그라운드에서 실행되는 어플리케이션은 통상 사용자에 의해 현재 사용되는 어플리케이션이 아니기 때문에, 불필요한 과도한 메모리 점유를 이러한 어플리케이션의 수량을 제한함으로써 피할 수 있다.
선택적으로, 프로세서(61)에 의해 실행되는 명령에서, 상기 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계의 선택 가능한 방식은, 메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및 메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계를 포함한다.
선택적으로, 상기 메모리 리클레임 종료 조건은 다음의 조건:
상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
중 하나 이상을 포함한다.
선택적으로, 프로세서에 의해 실행되는 명령에서, 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서가 다음의 단계:
어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
에 따라 설정된다.
선택적으로, 프로세서에 의해 실행되는 명령에서, 상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라, 상기 메모리 리클레임 조건이 충족된 것으로 결정되면, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계는, 상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하는 단계를 포함한다.
실시예 6
도 7은 본 출원에 따른 단말 장치(700)의 구조를 개시하고, 이 단말 장치(700)는, 적어도 하나의 프로세서(701), 적어도 하나의 네트워크 인터페이스(704) 또는 다른 사용자 인터페이스(703), 메모리(705), 및 적어도 하나의 통신 버스(702)를 포함한다. 통신 버스(702)는 구성요소들 간의 연결 및 통신을 구현하도록 구성된다. 여기서, 메모리(705)는 내부 메모리 장치 및 외부 메모리 장치를 포함한다. 내부 메모리 장치는 내부 메모리라고도 하며, 프로세서(701)의 동작 데이터, 및 하드 디스크와 같은 외부 메모리와 교환된 데이터를 일시적으로 저장한다. 프로세서(701)는 내부 메모리 장치를 이용하여 외부 메모리와 데이터를 교환한다.
메모리(705)는 다음 요소들, 실행 가능한 모듈 또는 데이터 결과 또는 그 부분들, 또는 확장된 집합을 저장한다.
오퍼레이팅 시스템(7051)은 여러 시스템 프로그램을 포함하고, 두 개의 실행레벨을 가질 수 있는데, 그것은 커널 모드(7051a) 및 사용자 모드(7051b)이다. 프로세스가 시스템 호출을 수행하고 실행을 위해 커널 코드를 실행하는 경우, 그 프로세스는 커널 실행 모드에 있으며, 이것은 줄여서 커널 모드라고도 한다. 프로세스가 커널 모드에 있으면, 실행 상태의 커널 코드는 현재 프로세스의 커널 스택을 사용하고, 각 프로세스는 각자의 커널 스택을 가진다. 프로세스가 사용자의 커널 코드를 실행하는 경우, 이 프로세스는 사용자 실행 모드에 있고, 이것은 줄여서 사용자 모드라고도 한다. 이 경우, 프로세서(701)는 사용자 코드에서 동작하는데, 이것의 접근 레벨(privilege level)은 가장 낮다.
어플리케이션 프로그램 모듈(7052)은 여러 어플리케이션 프로그램(줄여서 어플리케이션)을 포함한다.
단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하는 단계; 및 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계.
선택적으로, 일실시예에서, 프로세서(701)는 추가로, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하고, 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
또, 프로세서(701)는 또한, 상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하고, 상기 적어도 하나의 미리 설정된 시간 세그먼트 각각 동안, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하도록 구성된다.
선택적으로, 또 다른 실시예에서, 프로세서(701)는 추가로, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
선택적으로, 또 다른 실시예에서, 프로세서(701)는 또한, 어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하고, 메모리 리클레임을 수행해야 하는 경우, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
선택적으로, 또 다른 실시예에서, 프로세서(701)는 또한, 백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된다.
또한, 여기서, 백그라운드에서 실행이 허가된 어플리케이션의 수는 현재 여유 메모리의 크기에 따라 시간 간격에 대해 설정될 수 있다. 백그라운드에서 실행 중인 어플리케이션은 통상 사용자가 현재 사용하는 어플리케이션이 아니기 때문에, 이들 어플리케이션의 수를 제한함으로써 메모리의 과도한 불필요한 점유를 피할 수 있다.
선택적으로, 또 다른 실시예에서, 프로세서(701)는 또한, 메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및 메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계에 따라, 메모리 리클레임을 수행할 어플리케이션을 결정하고 메모리 리클레임을 수행하도록 구성된다.
메모리 리클레임 종료 조건은 다음의 조건:
상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
중 하나 이상을 포함한다.
또한, 프로세서(701)는, 어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하고 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하도록 구성된다. 여기서, 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가진다.
선택적으로, 또 다른 실시예에서, 프로세서(701)는 또한, 상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하도록 구성된다.
추가로, 단말 장치(700)는 도 2 내지 도 4에서의 방법 및 실시예를 수행할 수 있고, 본 출원의 본 실시예에서 이들에 대한 상세한 설명을 다시 설명하지 않는다.
앞서 설명한 해결 수단을 이용하여, 어플리케이션이 사용자에 의해 자주 조작되고 사용되며 상대적으로 큰 메모리를 점유할 때 메모리 리클레임 빈도가 증가하여 메모리의 정상적 사용을 보장한다는 것을 이해할 것이다.
실시예 7
본 출원의 실시예는 단말(800) 및 메모리 리클레임 방법에 관한 것이고, 단말(800)은 모바일 폰, 태블릿, PDA(Personal Digital Assistant), POS(Point of Sales), 또는 차량 탑재 컴퓨터일 수 있다.
도 8은 본 출원의 실시예에 따른 단말(800)의 개략 구성도이다.
도 8을 참조하면, 본 출원의 본 실시예에서의 단말(800)은, 프로세서(810), 메모리(820), 입력 유닛(830), 전원(850), 무선 주파수(RF) 회로(860), 오디오 주파수 회로(870), 및 와이파이(WiFi) 모듈(880)을 포함한다.
메모리(820)는 내부 메모리 장치(821) 및 외부 메모리(822)를 포함한다. 내부 메모리 장치(821)는 프로세서(810)의 동작 데이터 및 하드 디스크와 같은 외부 메모리(822)와 교환되는 데이터를 일시적으로 저장하도록 구성된다. 프로세서(810)는 내부 메모리 장치(810)를 이용하여 외부 메모리(822)와 데이터를 교환한다. 내부 메모리 장치(821)는 비휘발성 랜덤 액세스 메모리(NVRAM), 다이내믹 랜덤 액세스 메모리(DRAM), 스태틱 랜덤 액세스 메모리(SRAM), 또는 플래시 메모리 중 하나일 수 있고, 외부 메모리(822)는 하드 디스크, 광 디스크, USB 플래시 드라이브, 플로피 디스크, 또는 테이프 드라이브일 수 있다.
프로세서(810)는, 사용자 모드에서 메모리 내의 명령을 실행하여, 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하고, 상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행한다. 메모리 리클레임은 소정의 메모리 리클레임 시간 간격에 의해 트리거될 수 있는데, 구체적으로는, 프로세서(810)가 적어도 하나의 미리 설정된 시간 간격에서 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보 및 메모리 점유 정보를 개별로 결정하고, 적어도 하나의 미리 설정된 시간 세그먼트의 각 시간 세그먼트에 대해, 단말에 설치된 어플리케이션의, 그 시간 세그먼트에서의 사용자 조작 및 사용 정보 및 메모리 점유 정보에 따라, 해당 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정한다. 선택적으로, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 메모리 리클레임이 또한 트리거될 수 있다. 메모리 리클레임은 또한, 어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 트리거될 수 있다. 메모리 리클레임 조건은 또한 백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 트리거될 수 있다. 또한, 여기서 백그라운드에서 실행이 허가된 어플리케이션의 수는 현재 여유 메모리의 크기에 따라 시간 간격에 대해 설정될 수 있다. 백그라운드에서 실행 중인 어플리케이션은 통상 사용자가 현재 사용하는 어플리케이션이 아니기 때문에, 이들 어플리케이션의 수를 제한함으로써 메모리의 과도한 불필요한 점유를 피할 수 있다.
선택적으로, 상술한 트리거 조건에 기초하여, 프로세서(810)가 메모리 클레임을 수행하는 프로세스는, 메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및 메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계일 수 있다. 또한, 메모리 리클레임 종료 조건은 다음의 조건: 상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우; 현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및 백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우 중 하나 이상을 포함할 수 있다. 또한, 단말에 설치된 어플리케이션은 어플리케이션의 사용 빈도에 따라 그룹화되는데, 여기서 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가진다. 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서는 각 그룹에 대응하는 사용 빈도 범위에 따라 결정되고, 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가진다.
추가로, 프로세서(810)는, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 실행한다.
입력 유닛(830)은 입력 숫자 또는 문자 정보를 수신하고, 단말(800)의 사용자 설정 및 기능 제어에 관한 신호 입력을 생성한다. 구체적으로, 본 출원의 본 실시예에서, 입력 유닛(830)은 터치 패널(831)을 포함할 수 있다. 터치 패널(831)은 또한, 터치 스크린이라도 하며, 사용자에 의해 터치 패널의 위 또는 그 근처에서 행해지는 터치 조작(사용자가 터치 패널(831)의 위 또는 그 근처에 스타일러스와 같은 적절한 액세서리나 물건 또는 손가락을 가지고 행하는 조작과 같은)을 수집하고, 미리 설정된 프로그램에 따라 대응하는 연결 장치를 구동한다. 선택적으로, 터치 패널(831)은 두 개의 부분을 포함하는데, 그 두 개의 부분은 터치 검출 장치 및 터치 제어기이다. 터치 검출 장치는 사용자의 터치 움직임을 검출하고, 터치 조작에 의해 야기되는 신호를 검출하며, 터치 제어기에 그 신호를 보낸다. 터치 제어기는 터치 검출 장치로부터 터치 정보를 수신하고, 그 터치 정보를 터치 좌표로 변환하며, 그 터치 좌표를 프로세서(810)에 전송하고, 프로세서(810)에 의해 전송된 명령을 수신하거나 그 명령을 실행한다. 또한, 터치 패널(831)은, 저항형, 용량형, 적외선형, 및 표면 음파형과 같은 여러 형태로 구현될 수 있다. 터치 패널(831)에 더하여, 입력 유닛(830)은 하나 이상의 다른 입력 장치(832)를 포함할 수도 있는데, 이 하나 이상의 다른 입력 장치(832)는, 한정되는 것은 아니지만, 물리적 키보드, 기능키(볼륨키 및 온/오프키 등), 트랙볼, 마우스, 조이스틱 등을 포함할 수 있다.
단말(800)은 또한, 표시 유닛(840)을 더 포함할 수 있는데, 표시 유닛(840)은 단말(800)의 여러 메뉴 인터페이스뿐 아니라 사용자를 위해 제공되는 정보나 사용자가 입력한 정보를 표시하도록 구성된다, 표시 유닛(840)은 표시 패널(841)을 포함할 수 있다. 선택적으로, LCD, OLED 등의 형태가 표시 패널(841)을 구성하기 위해 사용될 수 있다.
본 출원의 본 실시예에서, 터치 패널(831)은 표시 패널(841)을 덮어서 터치 표시 스크린을 구성할 수 있다. 터치 표시 스크린 위 또는 근처에서 터치 조작을 검출한 때, 터치 표시 스크린은 터치 조작을 프로세서(810)에 전송하여 터치 이벤트의 유형을 결정하고, 그런 다음 프로세서(810)는 대응하는 시각적 출력을 그 터치 이벤트의 유형에 따라 터치 표시 스크린상에 출력한다.
본 출원의 본 실시예에서, 터치 표시 스크린은 어플리케이션 인터페이스 표시 영역과 공통 제어 표시 영역을 포함한다. 어플리케이션 인터페이스 표시 영역과 공통 제어 표시 영역의 배치 방식은 제한되어 있지 않고, 이들 두 개의 표시 영역을, 상하 배치 또는 좌우 배치로 하여 구별할 수 있도록 하는 배치 방법일 수 있다. 어플리케이션 인터페이스 표시 영역은 어플리케이션 프로그램 인터페이스를 표시하기 위해 사용될 수 있다. 각 인터페이스는 적어도 하나의 어플리케이션 프로그램의, 아이콘 또는 홈 스크린 위젯 또는 두 개 모두와 같은, 인터페이스 요소를 포함할 수 있다. 어플리케이션 인터페이스 표시 영역은 또한, 콘텐츠가 없는 비어 있는 인터페이스일 수 있다. 공통 제어 표시 영역은, 설정 버튼, 인터페이스 수, 스크롤 바, 전화번호부 아이콘 등과 같은 상대적으로 높은 사용도의 어플리케이션 프로그램 아이콘에 대한 제어를 표시하기 위해 사용될 수 있다.
프로세서(810)는 단말(800)의 제어 센터이고, 다양한 인터페이스와 선을 사용하여 전체 모바일 폰의 각 부를 연결한다. 내부 메모리 장치(821)에 저장된 소프트웨어 프로그램 또는 모듈을 실행하고 외부 메모리(822)에 저장된 데이터를 호출함으로써, 프로세서(810)는 단말(800)의 여러 가지 기능을 실행하고, 데이터를 처리하여, 단말(800)에 대한 전체적인 모니터링을 수행한다.
통상의 기술자라면 본 출원의 실시예들이 방법, 시스템 또는 컴퓨터 프로그램 제품으로 제공될 수 있음을 이해할 것이다. 그러므로, 본 출원은 하드웨어만의 실시예, 소프트웨어만의 실시예, 또는 소프트웨어와 하드웨어의 조합의 실시예의 형태를 이용할 수 있다. 게다가, 본 출원은 컴퓨터에서 사용 가능한 프로그램 코드를 포함하는 하나 이상의 컴퓨터에서 사용 가능한 저장 매체(디스크 메모리, CD-ROM, 광 메모리 등을 포함하지만 한정되는 것은 아님)에 구현된다.
본 출원에서는, 본 출원의 실시예에 따른 방법, 장치(시스테) 및 컴퓨터 프로그램 제품에 대해 흐름도 및/또는 블록도를 참조하여 설명하였다. 컴퓨터 프로그램 명령을 이용하여 흐름도 및/또는 블록도 내의 각 프로세서 및/또는 블록, 그리고 흐름도 및/또는 블록도 내의 프로세스 및/또는 블록의 조합을 구현할 수 있다. 이들 컴퓨터 프로그램 명령은 범용 컴퓨터, 전용 컴퓨터, 임베디드 프로세서, 또는 다른 어떤 프로그래머블 데이터 처리 장치의 프로세서가 머신을 생성하고, 이로써 컴퓨터 또는 다른 어떤 프로그래머블 데이터 처리 장치의 프로세서가 흐름도 내의 하나 이상의 프로세서 및/또는 블록도 내의 하나 이상의 블록에서의 구체적인 기능을 구현하기 위한 장치를 생성할 수 있도록 한다.
이들 컴퓨터 프로그램 명령은 또한, 컴퓨터 또는 다른 어떤 프로그래머블 데이터 처리 장치로 하여금 특정한 방식으로 동작하도록 지시하는 컴퓨터 판독 가능한 메모리에 저장될 수 있는데, 이로써 컴퓨터 판독 가능한 메모리에 저장된 명령은 명령 장치를 포함하는 인공물을 생성한다. 명령 장치는 흐름도 내의 하나 이상의 프로세스 및/또는 블록도 내의 하나 이상의 블록 내의 특정 기능을 구현한다.
이러한 컴퓨터 프로그램 명령은 또한 컴퓨터 또는 다른 프로그래머블 데이터 처리 장치에 로딩될 수도 있으며, 이로써 일련의 동작 및 단계가 그 컴퓨터 또는 다른 프로그래머블 데이터 처리 장치에서 수행되어 컴퓨터에 의해 구현되는 프로세싱을 생성한다. 그러므로, 컴퓨터 또는 다른 프로그래머블 데이터 처리 장치에서 실행되는 명령은 흐름도 내의 하나 이상의 프로세스 및/또는 블록도 내의 하나 이상의 블록 내의 특정 기능을 구현하기 위한 단계들을 제공한다.
본 출원의 몇몇 바람직한 실시예를 설명하였지만, 통상의 기술자라면, 그들이 기본적인 개념을 습득하면 이들 실시예들을 변형하고 변경할 수 있다. 그러므로, 그러한 바람직한 실시예 및 모든 변경 및 변형이 본 출원의 보호범위 내에 있는지에 대해 이하의 청구범위의 해석에 의해야 한다.
분명한 것은, 통상의 기술자라면 본 출원의 기술적 사상이나 보호범위를 벗어나지 않고 본 출원에 대해 다양한 변형과 수정을 가할 수 있다. 이 경우, 본 출원은, 그러한 것들이 본 출원의 청구범위에 의해 정의되는 보호범위 및 그 균등의 범위에 포함된다면, 본 출원의 변형 및 수정을 포함하는 것으로 이해되어야 한다.

Claims (20)

  1. 메모리 리클레임 방법(memory reclaim method)으로서,
    단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하는 단계; 및
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면,
    상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계
    를 사용자 모드에서 실행하는
    메모리 리클레임 방법.
  2. 제1항에 있어서,
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은,
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계; 및
    현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계
    를 포함하는, 메모리 리클레임 방법.
  3. 제2항에 있어서,
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하는 단계는,
    상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및
    상기 적어도 하나의 미리 설정된 시간 세그먼트 각각에 대해, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계
    를 포함하는, 메모리 리클레임 방법.
  4. 제1항에 있어서,
    상기 단말에 설치된 어플리케이션의 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은,
    시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함하는,
    메모리 리클레임 방법.
  5. 제1항에 있어서,
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은,
    어플리케이션이 시작되거나 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하는 단계; 및
    메모리 리클레임을 수행해야 하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계
    를 포함하는, 메모리 리클레임 방법.
  6. 제1항에 있어서,
    상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 것은,
    백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하는 단계를 포함하는,
    메모리 리클레임 방법.
  7. 제2항 내지 제6항 중 어느 한 항에 있어서,
    상기 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계는,
    메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및
    메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계
    를 포함하는,
    메모리 리클레임 방법.
  8. 제7항에 있어서,
    상기 메모리 리클레임 종료 조건은 다음의 조건:
    상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
    현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
    포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
    백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
    중 하나 이상을 포함하는,
    메모리 리클레임 방법.
  9. 제7항 또는 제8항에 있어서,
    메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서가 다음의 단계:
    어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
    각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
    에 따라 설정되는,
    메모리 리클레임 방법.
  10. 제1항에 있어서,
    상기 단말에 설치된 어플리케이션의 사용자 조작 및 사용 정보에 따라, 상기 메모리 리클레임 조건이 충족된 것으로 결정되면, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하는 단계는,
    상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하는 단계를 포함하는,
    메모리 리클레임 방법.
  11. 메모리 리클레임 장치로서,
    사용자 모드에서, 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 모니터링하도록 구성된 결정 모듈; 및
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보 또는 메모리 점유 정보 중 적어도 하나에 따라, 메모리 리클레임 조건이 현재 충족된 것으로 결정되면, 상기 단말에서 현재 실행 중인 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 단말에서 현재 실행 중인 어플리케이션 중 메모리 리클레임을 해야 할 어플리케이션을 결정하고, 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출하여 메모리 리클레임을 수행하도록 구성된 메모리 리클레임 모듈
    을 포함하는 메모리 리클레임 장치.
  12. 제11항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로,
    상기 단말에 설치된 어플리케이션의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라 메모리 리클레임 시간 간격을 결정하고, 현재 시간이 상기 메모리 리클레임 시간 간격에 의해 지시되는 메모리 리클레임 시간에 도달한 때 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된,
    메모리 리클레임 장치.
  13. 제12항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로, 다음의 단계:
    상기 단말에 설치된 어플리케이션의, 적어도 하나의 미리 설정된 시간 세그먼트 각각에서, 사용자 조작 및 사용 정보, 및 메모리 점유 정보를 개별로 결정하는 단계; 및
    상기 적어도 하나의 미리 설정된 시간 세그먼트 각각 동안, 상기 단말에 설치된 어플리케이션의, 상기 각 시간 세그먼트에서의, 사용자 조작 및 사용 정보, 및 메모리 점유 정보에 따라, 상기 각 시간 세그먼트 내에서 메모리 리클레임 시간 간격을 개별로 결정하는 단계
    에 따라 메모리 리클레임 시간 간격을 결정하도록 구성된,
    메모리 리클레임 장치.
  14. 제11항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로, 시스템 여유 메모리가 소정의 제1 임계치보다 적다고 결정되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된, 메모리 리클레임 장치.
  15. 제11항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로,
    어플리케이션이 시작되거나 또는 포어그라운드 인터페이스로 전환되는 것이 검출되면, 상기 어플리케이션의 메모리 점유 정보 및 시스템 여유 메모리의 크기에 따라, 메모리 리클레임을 수행해야 할지를 결정하고,
    메모리 리클레임을 수행해야 하는 경우, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된,
    메모리 리클레임 장치.
  16. 제11항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로,
    백그라운드에서 현재 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정 허용 수량을 초과하는 경우, 메모리 리클레임 조건이 현재 충족된 것으로 결정하도록 구성된,
    메모리 리클레임 장치.
  17. 제12항 내지 제16항 중 어느 한 항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로,
    메모리 리클레임을 해야 할 어플리케이션의 미리 저장된 우선순위 순서에 따라, 상기 단말에서 현재 실행 중인 어플리케이션으로서 사용자에 의해 조작 또는 사용되지 않는 어플리케이션을 선택하고, 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트(high-probability use time segment) 내에 있는지를 결정하고, 여기서 상기 어플리케이션의 고확률 사용 시간 세그먼트는 상기 어플리케이션의 사용자 조작 및 사용 정보에 기초하여 결정되며, 상기 현재 시간이 상기 선택된 어플리케이션의 고확률 사용 시간 세그먼트 내에 있지 않으면, 상기 선택된 어플리케이션은 메모리 리클레임을 해야 할 어플리케이션인 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써 메모리 리클레임을 수행하는 단계; 및
    메모리 리클레임 종료 조건이 충족될 때까지 상기 단계를 반복하는 단계
    에 따라 메모리 리클레임을 수행하도록 구성된,
    메모리 리클레임 장치.
  18. 제17항에 있어서,
    상기 메모리 리클레임 종료 조건은 다음의 조건:
    상기 시스템 여유 메모리의 크기가 소정의 제2 임계치보다 더 큰 경우;
    현재 시작된 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우;
    포어그라운드 인터페이스로 전환되는 어플리케이션에 의해 요구되는 메모리가 상기 시스템 여유 메모리보다 더 작은 경우; 및
    백그라운드에서 실행 중인 어플리케이션의 수량이 백그라운드에서 실행될 수 있는 어플리케이션의 소정의 허용 수량과 같거나 그보다 작은 경우
    중 하나 이상을 포함하는,
    메모리 리클레임 장치.
  19. 제17항 또는 제18항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로,
    어플리케이션의 사용 빈도에 따라 단말에 설치된 어플리케이션을 그룹화하는 단계 - 동일 그룹 내의 어플리케이션은 동일한 사용 빈도 범위를 가짐 -; 및
    각 그룹에 대응하는 사용 빈도 범위에 따라 각 그룹에서 어플리케이션의 메모리 리클레임 우선순위 순서를 결정하는 단계 - 동일 그룹 내의 어플리케이션은 동일 우선순위 순서를 가짐 -
    에 따라 메모리 리클레임을 해야 하는 어플리케이션의 우선순위 순서를 설정하도록 구성된,
    메모리 리클레임 장치.
  20. 제11항에 있어서,
    상기 메모리 리클레임 모듈은 구체적으로,
    상기 단말에서의 어플리케이션이 백그라운드에 체류하는 기간이 소정 기간을 초과하는 것이 검출되면, 상기 메모리 리클레임 조건이 현재 충족된 것으로 결정하고, 상기 커널 모드에 의해 제공되는 메모리 리클레임 인터페이스를 호출함으로써, 백그라운드에 체류하는 기간이 소정 기간을 초과한 어플리케이션의 메모리를 리클레임하도록 구성된,
    메모리 리클레임 장치.
KR1020187020861A 2015-12-31 2016-12-22 메모리 리클레임 방법 및 장치 KR20180097674A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201511032537.7 2015-12-31
CN201511032537.7A CN105701025B (zh) 2015-12-31 2015-12-31 一种内存回收方法及装置
PCT/CN2016/111557 WO2017114288A1 (zh) 2015-12-31 2016-12-22 一种内存回收方法及装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020207027212A Division KR102206364B1 (ko) 2015-12-31 2016-12-22 메모리 리클레임 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20180097674A true KR20180097674A (ko) 2018-08-31

Family

ID=56226841

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020187020861A KR20180097674A (ko) 2015-12-31 2016-12-22 메모리 리클레임 방법 및 장치
KR1020207027212A KR102206364B1 (ko) 2015-12-31 2016-12-22 메모리 리클레임 방법 및 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020207027212A KR102206364B1 (ko) 2015-12-31 2016-12-22 메모리 리클레임 방법 및 장치

Country Status (5)

Country Link
US (1) US11023372B2 (ko)
EP (1) EP3388946B1 (ko)
KR (2) KR20180097674A (ko)
CN (1) CN105701025B (ko)
WO (1) WO2017114288A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022059978A1 (ko) * 2020-09-21 2022-03-24 삼성전자(주) 전자장치 및 그 제어방법

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105701025B (zh) * 2015-12-31 2019-07-23 华为技术有限公司 一种内存回收方法及装置
CN106201717A (zh) * 2016-07-01 2016-12-07 珠海市魅族科技有限公司 一种管理系统内存的方法及终端
CN107766128B (zh) 2016-08-17 2021-01-29 华为技术有限公司 一种启动应用的方法及装置
CN107220076B (zh) 2016-09-27 2018-10-30 华为技术有限公司 一种内存回收方法及装置
CN107885666B (zh) * 2016-09-28 2021-07-20 华为技术有限公司 一种内存管理方法和装置
CN106484472B (zh) 2016-09-29 2021-06-15 华为技术有限公司 一种内存回收方法及终端
CN106502740B (zh) * 2016-10-31 2019-08-06 北京小米移动软件有限公司 应用安装方法和装置
CN106803860B (zh) * 2017-01-23 2020-12-29 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN106843450A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN106844032A (zh) * 2017-01-23 2017-06-13 努比亚技术有限公司 一种终端应用的存储处理方法和装置
CN106951327B (zh) * 2017-03-23 2018-11-30 维沃移动通信有限公司 一种应用程序对系统影响的检测方法及移动终端
CN107168791A (zh) * 2017-04-13 2017-09-15 北京安云世纪科技有限公司 亮屏状态下的终端内存优化方法、装置及移动终端
CN107249074A (zh) * 2017-05-16 2017-10-13 努比亚技术有限公司 应用程序快速启动方法、移动终端及计算机可读存储介质
CN109271247A (zh) * 2017-07-12 2019-01-25 珠海市魅族科技有限公司 内存优化方法、装置、计算机装置以及存储介质
CN108228341B (zh) * 2017-08-07 2021-03-02 珠海市魅族科技有限公司 内存回收方法及装置、终端设备及计算机可读存储介质
CN107395744A (zh) * 2017-08-18 2017-11-24 广东欧珀移动通信有限公司 数据同步方法、移动终端以及存储介质
CN108228343B (zh) * 2017-08-21 2020-11-17 珠海市魅族科技有限公司 内存回收方法及装置、计算机装置及计算机可读存储介质
CN107704876B (zh) * 2017-09-30 2020-09-08 Oppo广东移动通信有限公司 应用控制方法、装置、存储介质以及电子设备
CN109600409B (zh) * 2017-09-30 2022-08-19 华为终端有限公司 应用的资源管理方法及终端
CN109669733A (zh) * 2017-10-12 2019-04-23 腾讯科技(深圳)有限公司 一种终端设备内存管理的方法及装置
CN107844342B (zh) * 2017-11-21 2021-07-09 Oppo广东移动通信有限公司 应用程序保活的管控方法、装置及存储介质和移动终端
CN108052388A (zh) * 2017-11-24 2018-05-18 武汉斗鱼网络科技有限公司 一种Android中内存回收方法及装置
CN107807857B (zh) * 2017-11-29 2021-05-21 努比亚技术有限公司 清理运行内存的方法、设备及计算机可存储介质
CN108279975B (zh) * 2017-12-11 2022-01-14 努比亚技术有限公司 一种内存控制方法、移动终端、数据交互方法及服务器
CN109992393A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 应用处理方法和装置、电子设备、计算机可读存储介质
CN109992402B (zh) 2017-12-29 2021-07-09 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN110018902B (zh) * 2018-01-10 2023-01-31 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN110018901B (zh) * 2018-01-10 2021-08-03 Oppo广东移动通信有限公司 内存回收方法、装置、计算机设备和计算机可读存储介质
CN110018899B (zh) * 2018-01-10 2021-09-07 华为技术有限公司 回收内存的方法及装置
CN110018900B (zh) * 2018-01-10 2023-01-24 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN110032321B (zh) * 2018-01-12 2024-02-20 Oppo广东移动通信有限公司 应用程序处理方法和装置、电子设备、计算机可读存储介质
CN108600840B (zh) * 2018-03-29 2020-07-10 深圳市九洲电器有限公司 机顶盒功耗控制方法及系统
CN108563506A (zh) * 2018-04-11 2018-09-21 青岛海信移动通信技术股份有限公司 移动终端的内存回收方法及装置
CN110377527B (zh) * 2018-04-13 2023-09-22 华为技术有限公司 一种内存管理的方法以及相关设备
CN108932163A (zh) * 2018-06-15 2018-12-04 奇酷互联网络科技(深圳)有限公司 内存管理方法、装置、可读存储介质及终端
KR20200027204A (ko) * 2018-09-04 2020-03-12 삼성전자주식회사 전자장치 및 그 제어방법
CN109857556B (zh) * 2019-01-15 2021-01-08 Oppo广东移动通信有限公司 内存回收方法及装置、存储介质和电子设备
CN110096357A (zh) * 2019-03-29 2019-08-06 北京奇安信科技有限公司 一种分布式系统的内存资源清理方法及装置
CN110083450A (zh) * 2019-04-09 2019-08-02 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
US11327809B2 (en) 2019-06-19 2022-05-10 International Business Machines Corporation Virtual machine memory removal increment selection
CN112328316B (zh) * 2019-08-02 2023-01-24 Tcl科技集团股份有限公司 一种app优化方法、移动终端及存储介质
CN112445606A (zh) * 2019-08-30 2021-03-05 华为技术有限公司 内存回收方法及装置
CN110673955B (zh) * 2019-09-20 2022-07-12 北京字节跳动网络技术有限公司 优化内存的方法、装置、系统、终端和存储介质
CN110727607B (zh) * 2019-09-27 2022-08-12 Oppo广东移动通信有限公司 内存回收方法、装置以及电子设备
CN110727606A (zh) * 2019-09-27 2020-01-24 Oppo(重庆)智能科技有限公司 内存回收方法、装置以及电子设备
CN110795239A (zh) * 2019-10-15 2020-02-14 浙江口碑网络技术有限公司 应用内存泄露的检测方法及装置
CN111045779B (zh) * 2019-11-01 2024-03-01 福建天泉教育科技有限公司 系统内存回收配置方法、存储介质
CN111078406B (zh) * 2019-12-10 2023-01-10 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备
CN111258921B (zh) * 2020-01-14 2024-01-26 Oppo广东移动通信有限公司 垃圾内存回收方法及装置、电子设备、存储介质
CN111262737B (zh) * 2020-01-16 2023-11-28 圆山电子科技(深圳)有限公司 一种端口配置管理方法、装置、存储介质及终端
CN113590500A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 一种内存管理方法及终端设备
CN111679914B (zh) * 2020-06-12 2023-06-27 北京字节跳动网络技术有限公司 一种内存管理方法、系统、计算机设备及存储介质
CN111756922A (zh) * 2020-06-15 2020-10-09 北京智明星通科技股份有限公司 一种手机游戏的运行方法、系统及游戏终端
CN111782294A (zh) * 2020-06-28 2020-10-16 珠海豹趣科技有限公司 一种应用程序的运行方法、装置、电子设备及存储介质
CN114443277A (zh) * 2020-10-31 2022-05-06 华为终端有限公司 内存管理方法、装置、电子设备以及计算机可读存储介质
US11442832B2 (en) * 2020-11-24 2022-09-13 Hewlett Packard Enterprise Development Lp Managing synchronized reboot of a system
CN112817759B (zh) * 2021-01-26 2023-06-16 广州欢网科技有限责任公司 Tv视频应用内存占用优化方法、装置和电视终端
CN113886060B (zh) * 2021-05-28 2022-09-23 荣耀终端有限公司 压缩内存的方法和装置
WO2023048454A1 (en) * 2021-09-21 2023-03-30 Samsung Electronics Co., Ltd. Method and electronic device for managing memory
CN117130947A (zh) * 2023-01-31 2023-11-28 荣耀终端有限公司 一种内存管理方法及电子设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7412694B2 (en) * 2003-09-18 2008-08-12 International Business Machines Corporation Detecting program phases with periodic call-stack sampling during garbage collection
US20060074872A1 (en) * 2004-09-30 2006-04-06 International Business Machines Corporation Adaptive database buffer memory management using dynamic SQL statement cache statistics
CN1770125A (zh) * 2004-11-04 2006-05-10 华为技术有限公司 一种分配内存的方法
CN101833512A (zh) 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
DE112011103979T5 (de) * 2010-11-30 2013-08-29 International Business Machines Corporation Computerprogramm und System für ein Verfahren zur Optimierung der Speicherverwaltung einer auf einer virtuellen Maschine ausgeführten Anwendung
CN102799471B (zh) * 2012-05-25 2014-11-05 上海斐讯数据通信技术有限公司 操作系统的进程回收方法及系统
CN103246568A (zh) * 2013-04-16 2013-08-14 深圳桑菲消费通信有限公司 一种通过手机设置应用优先级的方法和装置
CN104111873B (zh) * 2013-04-22 2019-02-26 深圳富泰宏精密工业有限公司 内存释放方法及系统
CN103324500B (zh) * 2013-05-06 2016-08-31 广州市动景计算机科技有限公司 一种回收内存的方法及装置
US20150095603A1 (en) 2013-09-30 2015-04-02 Samsung Electronics Co., Ltd. Method and device for clearing process in electronic device
CN103544063B (zh) * 2013-09-30 2017-02-08 三星电子(中国)研发中心 应用于安卓平台的进程清除方法和装置
CN104050035B (zh) * 2014-05-14 2018-05-25 小米科技有限责任公司 应用程序的处理方法及装置
US9690685B2 (en) * 2014-05-30 2017-06-27 Apple Inc. Performance management based on resource consumption
US10642663B2 (en) * 2014-09-10 2020-05-05 Oracle International Corporation Coordinated garbage collection in distributed systems
CN104298612A (zh) * 2014-09-30 2015-01-21 北京金山安全软件有限公司 移动终端中清理内存的方法、装置和移动终端
US9940040B2 (en) * 2015-08-26 2018-04-10 Toshiba Memory Corporation Systems, solid-state mass storage devices, and methods for host-assisted garbage collection
CN105701025B (zh) * 2015-12-31 2019-07-23 华为技术有限公司 一种内存回收方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022059978A1 (ko) * 2020-09-21 2022-03-24 삼성전자(주) 전자장치 및 그 제어방법

Also Published As

Publication number Publication date
KR20200111295A (ko) 2020-09-28
EP3388946A4 (en) 2018-12-26
CN105701025A (zh) 2016-06-22
EP3388946B1 (en) 2022-04-06
EP3388946A1 (en) 2018-10-17
KR102206364B1 (ko) 2021-01-21
BR112018013524A2 (pt) 2018-12-11
US20180307600A1 (en) 2018-10-25
WO2017114288A1 (zh) 2017-07-06
CN105701025B (zh) 2019-07-23
US11023372B2 (en) 2021-06-01

Similar Documents

Publication Publication Date Title
KR20180097674A (ko) 메모리 리클레임 방법 및 장치
US6671802B1 (en) Performance optimization of computer system by dynamically and immediately updating a configuration setting based on detected change in preferred use
EP3506105B1 (en) Method and device for processing a memory and storage medium
CN102027453B (zh) 用于在虚拟环境中优化中断处理的系统和方法
EP3508974A1 (en) Method and terminal for allocating system resource to application
CN105740078B (zh) 一种内存管理方法、装置及终端
EP3495950A1 (en) Method and device for managing background applications of terminal
CN101794567A (zh) 图片加载的方法及终端
CN107807847B (zh) 应用进程的管理方法和终端设备
US11461179B2 (en) System recovery method and apparatus
CN114096953A (zh) 内存管理方法、装置、电子设备和计算机可读介质
US20190243666A1 (en) Application startup control method and control device
WO2019128431A1 (en) Memory processing method and device and storage medium
US8499138B2 (en) Demand-based memory management of non-pagable data storage
CN115525631A (zh) 数据库数据迁移方法、装置、设备、存储介质
US20150127916A1 (en) Dynamic memory allocation
CN110955614B (zh) 文件缓存的回收方法、装置、存储介质及终端
CN111444117B (zh) 存储空间碎片化实现方法、装置、存储介质及电子设备
CN112817835A (zh) 性能数据获取方法、装置、处理器及电子装置
CN111475435A (zh) 一种存储介质共享方法、装置及电子设备和存储介质
EP4354293A1 (en) Detection method and apparatus, and electronic device
CN107526675B (zh) 记录应用信息的方法、装置、存储介质及电子设备
CN110032340A (zh) 一种磁盘数据管理方法及相关装置
CN113032290A (zh) 闪存配置方法、装置、电子设备和存储介质
CN108280113B (zh) Service Worker控制方法、装置及电子终端

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
E601 Decision to refuse application
E801 Decision on dismissal of amendment
A107 Divisional application of patent