KR102245025B1 - 메모리 반환 방법 및 장치 - Google Patents

메모리 반환 방법 및 장치 Download PDF

Info

Publication number
KR102245025B1
KR102245025B1 KR1020197010127A KR20197010127A KR102245025B1 KR 102245025 B1 KR102245025 B1 KR 102245025B1 KR 1020197010127 A KR1020197010127 A KR 1020197010127A KR 20197010127 A KR20197010127 A KR 20197010127A KR 102245025 B1 KR102245025 B1 KR 102245025B1
Authority
KR
South Korea
Prior art keywords
memory
event
application
threshold
return
Prior art date
Application number
KR1020197010127A
Other languages
English (en)
Other versions
KR20190046995A (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 KR20190046995A publication Critical patent/KR20190046995A/ko
Application granted granted Critical
Publication of KR102245025B1 publication Critical patent/KR102245025B1/ko

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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
    • 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
    • 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
    • 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
    • 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/466Transaction processing
    • 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]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 실시예들은 메모리 반환 방법 및 장치를 개시한다. 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 하나 이상의 애플리케이션의 프로세스를 포함하는 백그라운드 프로세스 리스트로부터 메모리가 반환되는 프로세스를 결정하는 단계 - 메모리가 반환될 프로세스는 하나 이상의 애플리케이션의 프로세스 중 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 하나의 프로세스이고, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이임 -, 그리고 메모리가 반환될 프로세스에 의해 점유된 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하는 단계를 포함한다.
본 발명의 실시예들을 구현하여, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.

Description

메모리 반환 방법 및 장치
본 개시는 정보 기술 분야에 관한 것으로서, 특히 메모리 반환 방법 및 장치에 관한 것이다.
단말기(스마트폰 및 태블릿 컴퓨터와 같은)의 개발과 함께, 단말기는 사람들의 일상 생활에서 없어서는 안 될 물건이 되었다. 실제로, 사용자가 단말기를 막 구입한 때, 사용자는 단말기를 매우 원활하게 사용하고, 애플리케이션은 매우 빠르게 실행된다는 것이 밝혀졌다. 오랜 시간 동안 단말기가 사용된 후에, 설치된 애플리케이션이 증가함에 따라, 백그라운드에서는 많은 쓸모없는 프로세스와 서비스가 실행되고, 사용자가 웹 페이지를 탐색하고 애플리케이션 프로그램(Application, APP)을 사용하는 때, 과도한 데이터가 캐싱된다. 이것들은 시스템의 가용 메모리를 감소시키고, 단말기를 간헐적으로 중지시킨다.
일반적인 방법은 시스템이 메모리를 할당하는 때, 시스템이 충분한 가용 메모리를 갖는지 확인하는 것이다. 시스템의 현재 가용 메모리가 현재 메모리 할당 요구 사항을 지원할 수 없으면, 시스템 캐시 반환 또는 프로세스 중지와 같은 시스템 메모리 정리 작업이 시작된다. 그러나, 그 결과, 메모리 리소스를 요구하는 애플리케이션은 대기 상태에서 가로 막혀, 애플리케이션의 응답 시간이 연장되고, 단말기의 간헐적 정지의 가능성이 증가한다.
본 개시의 실시예들은 단말기의 간헐적 정지의 가능성을 감소시키기 위해, 메모리 반환 방법 및 장치를 제공한다.
본 개시의 실시예들의 제1 양태는, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 하나 이상의 애플리케이션의 프로세스를 포함하는 백그라운드 프로세스 리스트로부터 메모리가 반환되는 프로세스를 결정하는 단계, 그리고 메모리가 반환될 프로세스에 의해 점유된 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하는 단계를 포함하고, 메모리가 반환될 프로세스는 하나 이상의 애플리케이션의 프로세스 중 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 하나의 프로세스이고, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이인, 메모리 반환 방법을 개시한다.
전술한 방법의 단계들은 하나 이상의 메모리 제어 스레드, 하나 이상의 메모리 제어 프로세스, 또는 애플리케이션에 의해 수행될 수 있다.
백그라운드 프로세스 리스트는, 애플리케이션 중요도 및 프로세스 우선 순위에 따라 정렬되고 하나 이상의 애플리케이션의 프로세스를 포함하는 동적 양방향 리스트이다. 즉, 백그라운드 프로세스 리스트는 하나 이상의 애플리케이션을 포함할 수 있고, 하나의 애플리케이션은 하나 이상의 프로세스를 포함할 수 있다. 백그라운드 프로세스 리스트는 두 가지 경우에 생성된다. 첫 번째 경우는 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 백그라운드 프로세스 리스트가 생성되는 것이다. 일반적으로, 이 경우는 메모리 반환이 즉시 수행되어야 하는 시나리오에 적용할 수 있다. 두 번째 경우는 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작고, 시스템이 유휴 상태에 있다고 결정하는 때, 백그라운드 프로세스 리스트가 생성되는 것이다. 일반적으로, 이 경우는 사용자가 단말기와 상호 작용하는 때 적용할 수 있고, 사용자 경험에 영향을 미치지 않도록 시스템이 유휴 상태인 때 메모리 반환이 수행되어야 한다.
구체적으로, 본 발명의 이 실시예에서, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되면, 메모리 반환 정책이 공식화될 수 있고, 메모리가 반환될 프로세스는 메모리 반환 정책에 기초하여 백그라운드 프로세스 리스트로부터 결정된다. 또한, 시스템의 현재 메모리 압력이 완화될 때까지, 메모리가 반환될 프로세스에 대응하는 메모리를 회수하기 위해, 처리 명령은 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록 시스템 커널에 송신된다.
또한, 애플리케이션들 사이에는 다양한 관계가 존재한다. 따라서, 백그라운드 프로세스에 의해 점유된 메모리가 반환되는 때, 정리된 프로세스가 관련 프로세스에 의해 끌어 올려지는 것을 방지하기 위해, 애플리케이션을 단위로서 사용하여 메모리 반환이 수행되고, 애플리케이션에 포함된 프로세스에 의해 점유된 메모리가 반환된다. 프로세스에 의해 점유된 메모리는 프로세스에 의해 독점적으로 점유된 메모리이며, 프로세스와 다른 프로세스에 의해 공유하는 메모리를 포함하지 않는다.
이러한 방식으로, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작다고 결정되는 때, 능동적인 메모리 반환이 수행될 수 있음을 알 수 있다. 애플리케이션이 실제로 많은 수량의 메모리를 요구하는 때, 시스템 커널은 이미 많은 수량의 가용 메모리를 반환했다. 따라서, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
가능한 구현에서, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제1 주요 이벤트가 검출되는 때, 트리거링되고, 메모리 임계치는 제1 주요 이벤트에 대응하는 제1 메모리 임계치이다 메모리 임계치는 정적으로 미리 설정되거나 또는 동적으로 구성될 수 있다. 상이한 제1 주요 이벤트는 상이한 시나리오에 대응하고, 대응하는 제1 메모리 임계치도 상이하다.
가능한 구현에서, 제1 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 및 메모리 부족(OOM: out of memory) 이벤트 중 어느 하나를 포함한다. 제1 주요 이벤트가 발생하는 때, 즉시 메모리 반환이 수행되어야 한다.
가능한 구현에서, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 및 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되고, 메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치이다. 메모리 임계치는 정적으로 미리 설정되거나 또는 동적으로 구성될 수 있다. 상이한 제2 주요 이벤트는 상이한 시나리오에 대응하고, 대응하는 제2 메모리 임계치도 상이하다.
이 구현에서, 단계들의 시간 순서는, 제2 주요 이벤트가 검출되는 때, 시스템이 유휴 상태에 있는지가 먼저 결정된다. 시스템이 유휴 상태에 있는 것으로 결정되면, 시스템의 현재 가용 메모리가 판독된다. 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되면, 메모리가 반환될 프로세스는 백그라운드 프로세스 리스트로부터 결정된다. 또한, 메모리가 반환될 프로세스에 대응하는 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하고, 처리 명령이 시스템 커널에 송신된다.
가능한 구현에서, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 트리거링되고, 백그라운드 프로세스 리스트로부터 메모리가 반환될 프로세스를 결정하는 작동은 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되고, 메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치이다.
이 구현에서, 단계들의 시간 순서는, 제2 주요 이벤트가 검출되는 때, 시스템의 현재 가용 메모리가 먼저 판독된다. 그런 다음 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되면, 시스템이 유휴 상태인지를 결정한다. 시스템이 유휴 상태에 있는 것으로 결정되면, 메모리는 반환될 프로세스가 백그라운드 프로세스 리스트로부터 결정된다. 또한, 메모리가 반환될 프로세스에 대응하는 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하고, 처리 명령이 시스템 커널에 송신된다.
가능한 구현에서, 제2 주요 이벤트는 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린-오프 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 스위치 이벤트, 작업 전환 완료 이벤트, 및 브로드캐스트 이벤트 중 어느 하나를 포함한다.
가능한 구현에서, 시스템이 유휴 상태에 있다고 결정하는 것은,
시스템의 현재 부하가 부하 임계치보다 더 작은지를 결정하는 단계, 그리고 시스템의 현재 부하가 부하 임계치보다 더 작은 때, 시스템이 유휴 상태에 있다고 결정하는 단계를 포함한다.
시스템이 유휴 상태에 있는 두 가지 시나리오가 있다. 첫 번째 시나리오는 단말기가 사용자에 의해 사용되고 있지 않는 것이다. 예를 들면, 단말기가 대기 상태에 있는 때, 유휴 상태에 있는 것으로 간주될 수 있다. 다른 예를 들면, 애플리케이션의 시동이 완료되고 디스플레이 스크린이 나타나지만, 그 이후에 단말기와 상호 작용이 없는 때, 이 경우, 시스템은 대량의 IO 조작을 가지지 않으며 유휴 상태에 있는 것으로 간주될 수 있습니다. 두 번째 시나리오는 사용자에 의해 단말기가 사용되지만 현재 시스템 부하가 사용자 경험에 영향을 미치지 않는 때, 예를 들어, 시스템 부하가 부하 임계치보다 더 작은 때, 시스템이 유휴 상태에 있는 것으로 간주될 수 있다.
가능한 구현에서, 메모리가 반환될 복수의 프로세스가 결정되는 때, 시스템 커널에 처리 명령을 송신하는 단계는,
복수의 스레드를 호출하여 복수의 처리 명령을 시스템 커널에 송신하는 단계를 포함하고, 각 스레드는 하나 이상의 처리 명령을 송신하는 데 사용된다.
메모리가 반환될 하나 이상의 프로세스가 결정될 수 있다. 하나의 프로세스가 복수의 처리 명령을 송신하는 것을 요구할 때, 하나의 프로세싱 명령을 송신한 후, 다른 처리 명령을 송신하기 전에 시스템 커널에 의해 메모리가 반환될 프로세스에 대응하는 메모리의 상태를 확인할 필요 없이, 처리 명령이 프로세스에 대해 하나씩 연속적으로 송신될 수 있다.
이 선택적 구현에서, 메모리가 반환될 복수의 프로세스가 결정되는 때, 시스템 커널에 복수의 처리 명령을 송신하도록 복수의 스레드가 호출될 수 있다.
구체적으로, 하나의 스레드에 의해 복수의 처리 명령을 송신하는 것은, 하나의 프로세스가 복수의 처리 명령을 송신하는 것을 요구할 때, 처리 명령은 하나의 프로세싱 명령을 송신한 후, 다른 처리 명령을 송신하기 전에 시스템 커널에 의해 메모리가 반환될 프로세스에 대응하는 메모리의 상태를 확인할 필요 없이, 스레드는 처리 명령을 하나씩 연속적으로 송신하는 것이다. 각 처리 명령은 메모리가 반환될 하나의 프로세스의 식별자를 가질 수 있다.
이러한 방식은 스레드에 의해 처리 명령을 시스템 커널이 송신하는 효율성을 증가시킬 수 있고, 시스템 커널의 메모리 반환 성능을 향상시킬 수 있음을 알 수 있다.
가능한 구현에서, 백그라운드 프로세스 리스트로부터 메모리가 반환되는 프로세스를 결정하는 단계는,
애플리케이션 중요도의 오름차순에 기초하여, 백그라운드 프로세스 리스트에 포함된 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하는 단계, 그리고 프로세스 우선 순위의 오름차순에 기초하여, 적어도 하나의 애플리케이션에 포함된 프로세스들로부터 메모리가 반환될 프로세스를 결정하는 단계를 포함한다.
가능한 구현에서, 메모리 반환 방법은,
시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계를 더 포함한다. 이 경우는 메모리 반환이 즉시 수행되어야 하는 시나리오에 적용될 수 있다.
가능한 구현에서, 메모리 반환 방법은,
시스템의 현재 가용 메모리가 메모리 임계치보다 더 작고, 시스템이 유휴 상태에 있다고 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계를 더 포함한다. 이 경우는 사용자가 단말기와 상호 작용하는 시나리오에 적용할 수 있고, 사용자 경험에 영향을 미치지 않도록 시스템이 유휴 상태인 때 메모리 반환이 수행되어야 한다.
가능한 구현에서, 백그라운드 프로세스 리스트를 생성하는 단계는,
백그라운드에서 현재 실행중인 각 애플리케이션의 주요 요소의 스코어를 결정하는 단계, 애플리케이션의 중요도를 획득하기 위해, 각 애플리케이션의 모든 주요 요소의 스코어에 대한 가중 계산을 수행하는 단계, 모든 애플리케이션의 중요도에 기초하여 모든 애플리케이션을 정렬하는 단계, 그리고 프로세스 우선 순위에 기초하여, 각 정렬된 애플리케이션에 포함된 프로세스를 정렬하여 백그라운드 프로세스 목록을 생성하는 단계를 포함하고, 주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스 점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함한다.
시스템 리소스는 컴퓨팅 리소스, 저장 리소스, CPU 리소스, 및 IO 리소스를 포함할 수 있지만 이에 제한되지는 않다. 백그라운드 프로세스 리스트가 애플리케이션의 주요 요소(프로세스 우선 순위, 사용자 사용 습관, 프로세스-점유 시스템 리소스, 및 애플리케이션 관계)에 기초하여 생성되는 때, 메모리 요구 사항에 기초하여, 처리를 필요로 하는 프로세스가 백그라운드 프로세스 리스트로부터 후속하여 결정될 수 있다. 이러한 방식으로 킬 가능(killable) 프로세스 대기열을 정확하게 선택하여, 프로세스의 오판/과소/누락 가능성을 감소시킨다.
본 개시의 실시예의 제2 양태는 본 발명의 실시예들의 제1 양태에서의 임의의 방법의 일부 또는 모든 단계를 수행하도록 구성된 기능 유닛들을 포함하는, 메모리 반환 장치를 개시한다. 단말기가 제1 양태에서의 임의의 방법의 일부 또는 모든 단계를 수행하는 때, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
본 개시의 실시예의 제3 양태는 프로세서 및 메모리를 포함하는 단말기를 개시하고, 여기서 메모리는 명령을 저장하도록 구성되며, 프로세서는 명령을 실행하도록 구성되고, 프로세서가 명령을 실행하여 본 발명의 실시예들의 제1 양태에서의 임의의 방법의 일부 또는 모든 단계를 수행한다. 단말기가 제1 양태에서 임의의 방법의 일부 또는 모든 단계를 수행하는 때, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
본 개시의 실시예들의 제4 양태는 컴퓨터 저장 매체를 개시하고, 여기서 컴퓨터 저장 매체는 프로그램을 저장하며, 프로그램은 구체적으로 본 발명의 실시예들의 제1 양태에서의 임의의 방법의 일부 또는 모든 단계를 수행하는 데 사용되는 명령을 포함한다.
본 개시의 실시예들에서의 기술적 해결책을 보다 명확하게 설명하기 위해, 실시예들을 설명하기 위해 요구되는 첨부 도면을 간략히 설명한다. 명백하게, 다음의 설명에서 첨부된 도면은 단지 본 발명의 일부 실시예들을 도시하고, 당업자는 창의적인 노력없이 이들 도면으로부터 다른 도면을 도출할 수 있다.
도 1은 본 발명의 일 실시예에서 개시된 운영 체제의 개략적인 구조도이다.
도 2는 본 발명의 일 실시예에서 개시된 메모리 반환 방법의 개략적인 순서도이다.
도 2a는 본 발명의 일 실시예에서 개시된 앱 중요도 식별의 개략도이다.
도 2b는 본 발명의 일 실시예에서 개시된 애플리케이션 관계의 개략도이다.
도 2c는 본 발명의 일 실시예에서 개시된 카메라 시작 시퀀스의 다이어그램이다.
도 2d는 본 발명의 일 실시예에서 개시된 다른 카메라 시작 시퀀스의 도면이다.
도 3은 본 발명의 일 실시예에서 개시된 다른 메모리 반환 방법의 개략적인 순서도이다.
도 4는 본 발명의 일 실시예에서 개시된 다른 메모리 반환 방법의 개략적인 순서도이다.
도 5는 본 발명의 일 실시예에서 개시된 메모리 반환 장치의 개략적인 구조도이다.
도 6은 본 발명의 일 실시예에서 개시된 단말기의 개략적인 구조도이다.
이하, 본 개시의 실시예들의 기술적 해결책을, 본 발명의 실시예들의 첨부 도면을 참조하여 명확하고 완전하게 설명한다. 명백하게, 설명된 실시예들은 본 발명의 실시예들의 일부에 불과하지만 전부는 아니다. 창의적인 노력없이 본 개시의 실시예들에 기초하여 당업자에 의해 획득된 다른 모든 실시예들은 본 발명의 보호 범위 내에 있다.
본 발명의 명세서, 청구 범위, 및 첨부 도면에 언급된 "포함하는", "포괄하는", 또는 그것의 임의의 다른 변형은 비-배타적인 포함을 포함하는 것으로 의도된다. 예를 들어, 일련의 단계 또는 유닛을 포함하는 프로세스, 방법, 시스템, 제품, 또는 장치는 열거된 단계 또는 유닛에 제한되지 않지만, 선택적으로 열거되지 않은 단계 또는 유닛을 더 포함하거나, 또는 선택적으로 프로세스, 방법, 제품, 또는 장치의 또 다른 고유한 단계 또는 유닛을 더 포함한다.
본 개시의 실시예들은 단말기의 간헐적 정지의 가능성을 감소시키기 위해, 메모리 반환 방법 및 장치를 개시한다. 다음은 별도로 자세히 설명한다.
본 개시의 실시예들에 의해 제공되는 메모리 반환 방법은 주로 단말기에 적용된다. 단말기는 사용자 장비(UE: User Equipment), 이동국(MS: Mobile Station), 이동 단말기(Mobile Terminal) 등으로 지칭될 수 있다. 선택적으로, 단말기는 RAN(Radio Access Network)를 사용하여 하나 이상의 코어 네트워크와 통신하는 능력을 가질 수 있다. 예를 들어, 단말기는 휴대 전화("셀룰러" 전화라고도 함) 또는 휴대성을 갖는 컴퓨터일 수 있다. 예를 들어, 단말기는 대안적으로 휴대용 모바일 장치, 포켓 크기의 모바일 장치, 핸드헬드 모바일 장치, 컴퓨터 내장 모바일 장치, 또는 차량용 모바일 장치일 수 있다. 단말기의 운영 체제는 안드로이드(Android) 운영 체제, iOS 운영 체제, 심비안(Symbian) 운영 체제, 블랙베리(BlackBerry) 운영 체제, Windows Phone 8 운영 체제 등을 포함하나 이에 제한되지 않는다.
본 개시의 실시예들에 의해 제공되는 메모리 반환 방법은 주로 안드로이드(Android) 운영 체제를 갖는 단말기에 적용된다.
본 발명의 실시예를 더 잘 이해하기 위해, 다음은 먼저 본 발명의 일 실시예에서 개시된 운영 체제의 개략적인 구조도를 설명한다.
도 1을 참조하면, 도 1은 본 발명의 일 실시예에서 개시된 운영 체제의 개략적인 구조도이다. 특히, 운영 체제는 Android 운영 체제일 수 있다. Android 운영 체제는 Linux 플랫폼을 기반으로 Google에 의해 개발된 오픈 소스 운영 체제이다. Android 운영 체제는 Linux 커널에 기반하는 계층화된 환경이고, 풍부한 기능들을 포함한다.
도 1에 도시된 바와 같이, 운영 체제(100)은 애플리케이션 계층(110), 프레임워크 계층(120), 코어 라이브러리 계층(130), 및 커널 계층(140)을 포함한다.
애플리케이션 계층(110)은 단말기가 작동할 때, 필요한 모든 애플리케이션 프로그램, 예를 들어, 전자 메일 클라이언트, 단문 메시지 서비스, 캘린더, 지도, 및 브라우저를 포함한다. 이러한 애플리케이션은 JAVA 또는 C/C++와 같은 언어를 사용하여 작성될 수 있다.
프레임워크 계층(120)은 안드로이드 애플리케이션 프로그램 프레임워크이고, 안드로이드 애플리케이션 프로그램은 모두 프레임워크에 기초하여 개발된다. 이 프레임워크는 기본 클래스 라이브러리의 세트를 제공하여 개발자가 풍부하고 새로운 애플리케이션을 개발하도록한다. 클래스 라이브러리에 기초하여, 개발자는 위치 정보 액세스, 백그라운드 서비스 실행, 알람 시계 설정, 및 상태 표시줄에 알림 추가와 같은 기능을 구현하기 위해, 장치의 하드웨어 이점을 자유롭게 활용할 수 있다. 도 1에 도시된 프레임워크 계층(120)은 안드로이드 운영 체제의 원래 프레임워크 계층의 기능적 모듈을 보유한다는 것을 알아야 한다. 또한, 시스템 서비스(121)에 대해 일부 수정이 이루어진다. 도 1에 도시된 바와 같이, 시스템 서비스(121)는 리소스 관리 시스템(RMS: Resource Management System) 모듈(1211), 애플리케이션 제어 모듈(1212), 및 시스템 리소스 상태 수집 모듈(1213)을 포함한다. RMS 모듈(1211)은 시스템 리소스 상태 수집 모듈(1213)에 의해 수집된 정보를 관리하도록 주로 구성되고, 애플리케이션 제어 모듈(1212)은 프로세스의 신속한 처리를 위해 주로 구성되며, 시스템 리소스 상태 수집 모듈(1213) 시스템 자원 부하 상태를 수집하고 식별하도록 주로 구성된다. 또한, 도 1에 도시된 바와 같이, 인식 프로세스(122)가 프레임워크 계층(120)에 추가된다. 인식 프로세스(122)는 RMS 모듈(1221), 절전 마법사 모듈(1222), 및 메모리 제어 모듈(1223)을 포함한다. RMS 모듈(1221)은, 긴 구현 시간을 취하고 스크린 온/오프 식별을 수행하는 메모리 제어 수단을 처리하도록 주로 구성된다. 절전 마법사 모듈(1222)은 주로 제어 처리(예를 들어, 프로세스 종료, 애플리케이션 시작 제한, 또는 메시지 배포 지연)를 수행하기 위해, 애플리케이션의 동작 상태를 식별하고, 애플리케이션에 의해 소비되는 배터리의 양이 배터리 임계치를 초과하는지를 결정하도록 구성된다. 메모리 제어 모듈(1223)은 주로 외부 모듈 인터페이스를 관리 및 처리하고, 시스템 유휴/부하 상태를 식별하며, 유휴 메모리 임계치의 구성을 관리하고, 메모리 부담 상태를 식별하며, 정밀한 메모리 반환 정책을 공식화하고, 스마트 메모리 할당을 수행하며, 유지 보수 및 테스트를 관리하도록 구성된다.
코어 라이브러리 계층(130)은 주로 컴포넌트의 기본 구현을 위한 C/C++ 라이브러리 세트(애플리케이션 프레임워크를 위한 기본 라이브러리)로 프레임워크 계층(120)의 컴포넌트를 제공한다. 코어 라이브러리 계층(130)은 인식 데몬(131)을 포함하고, 인식 데몬(131)은 주로 시스템 리소스 상태 정보를 수집하도록 구성된다.
커널 계층(140)은 안드로이드 운영 체제의 최하위 계층에 위치하며, 시스템 내의 하드웨어 계층 및 다른 소프트웨어 그룹의 직접적인 추상화로 간주될 수 있다. 커널 계층(140)은 주로 보안 메커니즘, 메모리 관리, 프로세스 관리, 파일 관리, 네트워크 통신 관리, 및 드라이버 관리를 포함하는 핵심 시스템 서비스를 안드로이드 운영 체제에 제공한다. 또한, 본 발명의 이 실시예에서, 커널 계층(140)은 프로세스-레벨에서 캐시 반환을 위해 대안적으로 구성될 수 있다.
도 2를 참조하면, 도 2는 본 발명의 일 실시예에서 개시된 메모리 반환 방법의 개략적인 순서도다. 방법은 도 1에 도시된 메모리 제어 모듈(1223)에 적용될 수 있다. 구체적으로, 메모리 제어 모듈(1223)은 하나 이상의 스레드일 수 있거나, 또는 메모리 제어 모듈(1223)은 하나 이상의 프로세스일 수 있다. 도 2에 도시된 바와 같이, 방법은 다음의 단계들을 포함할 수 있다.
201: 제1 주요 이벤트가 감지되는 때, 시스템의 현재 가용 메모리가 메모리 임계치보다 작은지를 확인한다.
본 발명의 이 실시예에서, 메모리 제어 모듈(1223)은 애플리케이션의 주요 이벤트를 검출할 수 있다. 구체적으로, 애플리케이션의 주요 정보(예를 들어, 프로세스 명칭, 사용자 식별자(UID: User Identifier) 및 프로세스 식별자(PID: Process Identifier))는 활동 관리자 서비스(AMS: Activity Manager Service)가 각 애플리케이션의 활동(activity)을 시작하는 때 후크(hook) 기능을 사용하여 획득될 수 있다. 또한, AMS는 애플리케이션 프로그램의 획득된 주요 정보를 메모리 제어 모듈(1223)에 송신할 수 있다. 따라서, 메모리 제어 모듈(1223)은 애플리케이션 프로그램의 주요 이벤트를 검출할 수 있다.
애플리케이션의 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 메모리 부족(OOM: Out of Memory), 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 전환 이벤트, 작업 전환 완료 이벤트, 브부하캐스트 이벤트, 네트워크 연결/스캐닝/상태 변경 이벤트(예를 들어, Wi-Fi, 2/3/4G, Bluetooth, 적외선, GPS(Global Positioning System) 무선 브부하캐스트, 또는 NFC(Near Field Communication)), 주변 연결 변경 이벤트(예를 들어, 충전기 삽입/제거), 경고/알람 이벤트, 전화 이벤트(전화 걸기, 신호 변경 등), 미디어 이벤트(오디오/비디오 변경 또는 녹음된 오디오 재생), 플래시 관련 이벤트, 프로그램 설치/제거 이벤트, 배터리 레벨 이벤트 등을 포함할 수 있다.
본 발명의 이 실시예에서, 즉각적인 메모리 반환을 필요로 하는 이벤트는 제1 주요 이벤트로서 미리 정의될 수 있고, 제1 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 및 OOM 이벤트를 포함할 수 있지만 이에 한정되는 것은 아니다. 프로그램 시동 개시 이벤트는 주로 즉시 시동을 요구하는 (예를 들어, 사용자가 WeChat 애플리케이션을 누를 때) 사용자-트리거링 애플리케이션 프로그램 이벤트이다. 정리 이벤트는 단말기 관리자 정리 이벤트, 원터치 정리 이벤트, 애플리케이션 제거 이벤트, 및 애플리케이션 캐시 제거 이벤트를 포함할 수 있지만, 이에 제한되지는 않는다. OOM 이벤트는 대용량 메모리 애플리케이션 시동에 필요한 메모리가 메모리 임계치를 초과하는 이벤트, 시스템 OOM 이벤트, 및 강제 애플리케이션 중지 이벤트를 초과하는 이벤트를 포함할 수 있지만, 이에 제한되지는 않는다.
본 발명의 이 실시예에서, 시스템 메모리는 점유-메모리 및 가용 메모리를 포함할 수 있다. 점유-메모리는 주로 현재 실행중인 프로세스와 서비스에 의해 점유되는 메모리 및 커널 작동에 의해 점유되는 메모리이다. 가용 메모리는 시스템의 유휴 메모리 및 캐시이다.
제1 주요 이벤트가 검출되는 때, 시스템의 현재 가용 메모리가 획득될 수 있고, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은지가 결정된다. 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작다고 결정되는 때, 이는 현재 시스템에 메모리 부담이 존재하고 메모리 반환이 수행되어야 함을 나타낸다. 메모리 임계치는 제1 주요 이벤트에 대응하는 제1 메모리 임계치이다.
선택적으로, 메모리 임계치는 정적으로 미리 설정될 수 있다. 특히, 다음과 같은 몇 가지 경우가 있다.
(1) 제품 사양에 따라 메모리 임계치를 구성한다.
2G, 3G, 4G, 및 6G RAM(Random Access Memory) 제품의 경우, 시스템의 가용 메모리가 상이하고, 이에 상응하여, 메모리 임계치도 상이하다. 예를 들어, 3G RAM 제품의 경우, 메모리 임계치는 600MB로 구성될 수 있다. 4G RAM 제품의 경우, 메모리 임계치는 700MB로 구성될 수 있다.
(2) 애플리케이션 시나리오에 따라 가능한 최소 메모리 임계치를 구성한다.
상이한 애플리케이션과 상이한 시나리오의 경우, 메모리 소비가 상이하다. 따라서, 적절한 메모리 임계치를 구성하는 데 (1)의 방식이 사용되면, 몇 가지 단점이 나타난다. 타사 애플리케이션이 고려되지 않았기 때문에 타사 애플리케이션이 시작 중에 일시적으로 중지될 수 있다. 이 문제를 해결하기 위해, 다양한 시나리오에서 다양한 애플리케이션에 의해 점유되는 최대 메모리에 대한 정보를 획득하기 위해, 애플리케이션 시장에서 최상위 순위의 타사 애플리케이션이 오프라인으로 분석될 수 있다.
표 1을 참조하면, 표 1은 일반적인 시나리오에서 타사 애플리케이션에 의해 점유되는 최대 메모리에 대한 정보를 나타낸다. 표 1은 몇 가지 애플리케이션만을 예로서 열거한다는 것을 알아야 한다.
애플리케이션 애플리케이션 시나리오 점유-메모리(RAM: KB) 평균값(KB)
QQ video 일일 체크인보기 554786 536644 502018 531149
Didi Chuxing 탐색 468643 449101 390822 436189
Taobao Tmall 홈페이지를 빠르게 스와핑 468147 403831 394853 422277
Moji Weather Timescape 게시 380951 428168 424905 411341
Youku Youku 회원 페이지에 진입하기 위한 홈 스크린 태핑 464924 439859 255841 386875
Moji Weather 새로운 내용 확인하기 378418 348067 423343 383276
UC Browser Sina Weibo 페이지를 빠르게 스 와이핑 348390 437752 324717 370286
Baidu Map 탐색 페이지에 진입하기 위한 "탐색" 태핑 505256 368885 226482 366874
Headlines Today My-Mall-Today's Deals 340781 387801 360222 362935
Happy Elements 체크인 352564 352913 353630 353036
특히, 단말기가 가동되고 부팅 완료(BOOT_COMPLETED) 이벤트가 수신되면, 단말기에 설치된 모든 애플리케이션의 식별자(예를 들어, 애플리케이션 명칭)가 쿼리(queried)될 수 있다. 또한, 로컬 프로그램의 점유-메모리 리스트를 생성하기 위해, 애플리케이션 식별자에 기초하여, 필요한 정보(예를 들어, 프로세스 명칭, 실행 시나리오, 최대 점유 메모리 정보)를 표 1로부터 획득할 수 있다. XML(Extensible Markup Language) 파일 또는 TXT 파일을 사용하여 로컬 프로그램의 점유-메모리 리스트를 저장할 수 있다. 상이한 애플리케이션의 경우, 단말기는 로컬 프로그램의 점유-메모리 리스트로부터 애플리케이션의 최대 점유 메모리 정보를 쿼리하고, 메모리 임계치를 애플리케이션의 최대 점유 메모리로 설정할 수 있다.
(3) 시스템에서 실행중인 프로세스에 의한 메모리의 과거 점유에 기초하여 구성을 수행한다.
각 사용자는 고유한 특성을 가진다. 오랜 시간 동안 단말기를 사용한 후, 단말기에 설치된 애플리케이션은 해당 단말기에서 실행중인 애플리케이션과 일치하지 않는다. 메모리 임계치는 시스템에서 실행중인 프로세스에 의한 메모리의 과거 점유에 기초하여 구성될 수 있다. 구체적으로, 단말기가 사용자에 의해 사용되지 않을 때(예를 들어, 자정에), 최대 메모리 점유 정보(예를 들어, 애플리케이션 프로그램 명칭 및 최대 점유 메모리)를 획득하기 위해, 각 프로세스의 작동 중의 메모리 점유의 히스토리 상태 정보(procstats)가 질의될 수 있다. 또한, 최대 점유 메모리가 현재 시스템 메모리 임계치와 비교된다. 최대 점유 메모리가 현재 시스템 메모리 임계치보다 더 크면, 최대 점유 메모리가 새로운 시스템 메모리 임계치로서 사용된다.
(4) 클라우드 제공을 통해 메모리 임계치를 구성한다.
클라우드 서버는 단말기의 식별자에 기초하여 다양한 시나리오에서 단말기에서 실행중인 모든 애플리케이션에 의해 점유된 메모리에 관한 정보를 수집하고, 미리 설정된 값(예를 들어, 300MB)보다 더 큰 메모리를 점유하는 애플리케이션의 명칭 및 애플리케이션의 실행 시나리오와 같은 정보를 사용하여 시트를 형성하고, 정기적으로(예를 들어, 매월) 그 시트를 단말기에 푸시한다. 시트를 수신한 후, 단말기는 그 시트 내의 애플리케이션 정보 및 로컬 애플리케이션 리스트를 탐색하고, 단말기에 설치된 애플리케이션들의 최대 메모리 점유 정보를 결정한다. 또한, 최대 점유 메모리가 현재 시스템 메모리 임계치와 비교된다. 최대 점유 메모리가 현재 시스템 메모리 임계치보다 더 크면, 최대 점유 메모리가 새로운 시스템 메모리 임계치로서 사용된다.
선택적으로, 메모리 임계치가 동적으로 구성될 수 있다.
구체적으로, 사용자 행동 분석 알고리즘을 사용하여, 애플리케이션 리스트를 구성하기 위해, 사용자의 사용 습관, 사용 내역, 사용 빈도, 및 애플리케이션의 사용 기간과 같은 정보에 기초하여 예측 알고리즘을 사용하여 이후에 실행될 가능성이 가장 높은 애플리케이션이 예측될 수 있다. 애플리케이션 리스트 내의 애플리케이션에 의해 요구되는 최대 메모리가 획득될 수 있고, 최대 메모리가 현재 시스템 메모리 임계치와 비교된다. 최대 점유 메모리가 현재 시스템 메모리 임계치보다 더 크면, 최대 점유 메모리가 새로운 시스템 메모리 임계치로서 사용된다.
202: 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 백그라운드 프로세스 리스트를 생성한다.
현재 시스템에 메모리 압박이 존재한다고 결정되는 때, 백그라운드 프로세스 리스트가 즉시 생성되어야 한다. 백그라운드 프로세스 리스트는, 애플리케이션 중요도 및 프로세스 우선 순위에 따라 정렬되고 하나 이상의 애플리케이션의 프로세스를 포함하는 동적 양방향 리스트이다. 즉, 백그라운드 프로세스 리스트는 하나 이상의 애플리케이션을 포함할 수 있고, 하나의 애플리케이션은 하나 이상의 프로세스를 포함할 수 있다. 백그라운드 프로세스 리스트는 애플리케이션 중요도 및 프로세스 우선 순위에 따라 정렬된 리스트다.
구체적으로, 백그라운드 프로세스 리스트를 생성하는 방식은 다음 단계를 포함한다.
(11) 백그라운드에서 현재 실행중인 각 애플리케이션의 주요 요소의 스코어를 결정하는 단계 - 여기서 주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스-점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함함 -,
(12) 애플리케이션의 중요도를 획득하기 위해, 각 애플리케이션의 모든 주요 요소의 스코어에 대한 가중 계산을 수행하는 단계,
(13) 모든 애플리케이션의 중요도에 기초하여 모든 애플리케이션을 정렬하는 단계, 그리고
(14) 프로세스 우선 순위에 기초하여, 각 정렬된 애플리케이션에 포함된 프로세스를 정렬하여 백그라운드 프로세스 목록을 생성하는 단계.
이 실시예에서, 단말기 백그라운드에서 실행되는 각 애플리케이션은 하나 이상의 프로세스를 포함할 수 있고, 각 애플리케이션의 주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스-점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함한다. 각 주요 요소는 대응하는 스코어를 가진다. 백그라운드 프로세스 리스트가 애플리케이션의 주요 요소(프로세스 우선 순위, 사용자 사용 습관, 프로세스-점유 시스템 리소스, 및 애플리케이션 관계)에 기초하여 생성되는 때, 처리를 필요로 하는 프로세스는 메모리 요구사항에 기초하여 백그라운드 프로세스 리스트로부터 후속하여 결정될 수 있다. 이러한 방식으로 킬 가능(killable) 프로세스 대기열을 정확하게 선택하여, 프로세스의 오판/과소/누락 가능성을 감소시킨다.
이 시스템은 각 프로세스의 중요성을 평가하고, 프로세스의 중요성은 프로세스의 우선 순위를 나타낸다. 일반적으로 중요도는 oom_adj(메모리 부족 조정) 값으로 표시되며, 각 프로세스에 할당된다. 시스템은 oom_adj에 기초하여 종료되어야 하는 프로세스를 결정한다. 일반적으로, oom_adj 스코어는 시스템에 의해 제공된다. 시스템은 현재 애플리케이션 실행 상태에 기초하여 oom_adj 스코어를 할당한다. oom_adj 스코어의 범위는 -17<oom_adj<16이다. 더 큰 oom_adj 스코어는 프로세스가 시스템에 의해 종료되도록 선택될 더 높은 가능성, 및 프로세스의 더 낮은 우선 순위를 지시한다.
사용자 사용 습관은 사용 시간 기록, 누적 사용 시간, 각 사용의 기간, 및 각 애플리케이션의 누적 사용 기간을 포함할 수 있지만, 이에 제한되지는 않는다. 사용자 사용 습관에 기초하여, 관련 프로세스 정보, 예를 들어, 어느 프로세스가 사용자에 의해 자주 사용된 애플리케이션의 프로세스들인지, 어느 프로세스가 사용자가 오랜 시간 동안 사용했던 애플리케이션의 프로세스들인지, 또는 어느 프로세스가 사용자에 의해 최근에 사용된 애플리케이션의 프로세스들인지가 결정될 수 있다. RMS 모듈(1221)은 앱 사용 습관을 학습하는 데 사용될 수 있다. 또한, 앱 중요도는 3개의 알고리즘을 함께 고려하여 식별될 수 있다.
도 2a를 참조하면, 도 2a는 본 발명의 일 실시예에서 개시된 앱 중요도 식별의 개략도이다. 도 2a에 도시된 바와 같이, 점선 박스(1)는 기계 학습 기반의 앱 중요도 식별 모델을 나타내고, 점선 박스(2)는 통계 규칙 기반 앱 중요도 식별 모델을 나타내며, 제3 알고리즘은 가장 최근 사용(LRU: Latest Recent Used) 애플리케이션이다. 애플리케이션 a에 대하여, 기계 학습에 기초하여 식별된 중요도는 Ph(a)이고, 통계 규칙에 기초하여 식별된 중요도는 P1(a)이며, 가장 최든에 사용된 애플리케이션에 기초하여 식별된 중요도는 Pu(a)이고, 대응하는 가중치들은 각각 Wh, Wl, 및 Wu인 것으로 가정한다. 그런 다음, 애플리케이션 a의 중요도를 계산하는 수식은 다음과 같다.
P(a) = Wh * Ph(a) + Wl * Pl(a) + Wu * Pu(a)
가중치는 트레이닝 중 연속적인 학습을 통해 획득되며, 사용자 독립적이다. 가중치는 앱 중요도 식별 플러그-인에 미리 설정되어 있으며, 버전 반복을 통해 업데이트된다.
사용자 사용 습관(habit) 스코어는 애플리케이션 중요도에 따라 할당될 수 있으며, 습관 스코어의 범위는 0<habit<16이다. 더 낮은 습관 스코어는 사용자에 의한 애플리케이션의 더 빈번한 사용을 나타낸다.
프로세스-점유 리소스는 컴퓨팅 리소스, 저장 리소스, 중앙 처리 장치(CPU: Central Processing Unit) 리소스, 및 입/출력(IO: InputOutput) 리소스를 포함하지만 이에 제한되지 않는다. 프로세스-점유 시스템 리소스(resource) 스코어는 점유 리소스의 크기에 기초하여 설정될 수 있고, 리소스 스코어의 범위는 0<resource<16이다. 예를 들어, 프로세스에 의한 CPU 점유가 3%보다 더 큰 때, 리소스 스코어는 16이다. 일반적으로, 프로세스에 의해 점유되는 더 많은 시스템 리소스는 그 프로세스에 대응하는 메모리가 반환될 것으로 그 프로세스가 선택될 가능성이 높다는 것을 나타낸다.
애플리케이션 관계는 애플리케이션 간에 존재하는 관계를 나타낸다. 구체적으로, 두 애플리케이션은 프로세스를 사용하여 관련될 수 있다. 본 발명의 이 실시예에서, 애플리케이션 관계는 백그라운드 애플리케이션과 포어그라운드(foreground) 애플리케이션 간의 관계일 수 있다. 이 관계는 일시적이며, 현재 프로세스 상태에 기초하여 실시간으로 업데이트될 수 있다. 관계는 getContentProvider, startActivity, bindService, unbindService, startService, stopService, 및 widget을 포함하지만, 이에 제한되지는 않다.
도 2b를 참조하면, 도 2b는 본 발명의 일 실시예에서 개시된 애플리케이션 관계의 개략도이며, 여기서 Pid1, Pid2, Pid3, Pid4...는 프로세스 식별자를 나타낸다. 도 2b의 가장 좌측의 프로세스는 가장 우측의 프로세스에 의존하고, 두 프로세스 사이에 관계가 존재한다. 예를 들어, 프로세스 Pid1의 Service1은 bindService를 사용하여 프로세스 Pid2와 관련되고, 프로세스 Pid2의 Service1은 startService를 사용하여 프로세스 Pid3과 관련된다.
일반적으로, 백그라운드 프로세스 정리 중에, 정리된 프로세스가 정리된 프로세스와 관련된 프로세스에 의해 끌어 올려지거나, 또는 프로세스가 정리되므로 기능적 이상이 발생할 수 있다. 예를 들어, 포어그라운드 입력 메소드는 독립 백그라운드 제공자 프로세스를 사용해야 하고, 독립 백그라운드 제공자 프로세스가 멈추거나 또는 제거되면, 포어그라운드 입력 메소드가 비정상이 된다. 음악이 독립적인 백그라운드 서비스 프로세스에 의존하는 동안 백그라운드 애플리케이션이 음악을 재생하는 때, 독립 서비스 프로세스가 멈추거나 또는 제거되면, 음악 재생 애플리케이션이 비정상이 된다. 사용자는 후속 가중치 작업을 위해 애플리케이션 관계(application-relation) 스코어를 설정할 수 있다. 애플리케이션-관계 스코어의 범위는 0<application-relation<16이다. 애플리케이션이 직접 관련되면, 애플리케이션 관련 스코어는 0일 수 있다. 애플리케이션이 간접적으로 연관되면, 애플리케이션 관련 스코어는 16일 수 있다. 더 높은 애플리케이션 관계 스코어는 애플리케이션과 다른 애플리케이션 사이의 더 약한 관계를 나타낸다.
또한, 각 애플리케이션에 대해, 애플리케이션의 중요도를 획득하기 위해, 모든 주요 요소의 스코어에 대해 가중치 계산이 수행될 수 있다. 구체적으로, 알고리즘은 다음과 같다.
Score = oom_adj * Poom_adj + habit * Phabit + resource * Presource + application-relation * Papplication-relation, where Poom_adj + Phabit + Presource + Papplication-relation = 1. 스코어(Score)는 애플리케이션의 중요도를 측정하는 데 사용될 수 있고, 더 작은 스코어(Score)는 더 높은 애플리케이션의 중요도를 나타낸다. 예를 들면, 애플리케이션 1의 스코어(Score)가 애플리케이션 2의 스코어(Score)보다 더 높으면, 애플리케이션 2의 중요도가 애플리케이션 1의 스코어 스코어보다 더 높다고 결정될 수 있다.
또한, 스코어(Score)에 기초하여 애플리케이션이 정렬될 수 있다. 각 애플리케이션에 대해, 애플리케이션이 두 개 이상의 프로세스를 포함하는 때, 백그라운드 프로세스 리스트를 생성하기 위해, 애플리케이션 내에 포함된 프로세스들이 우선 순위에 따라 정렬될 수 있다. 백그라운드 프로세스 리스트는 실제로 애플리케이션과 애플리케이션의 프로세스를 포함하는 2차원 리스트다. 이 2차원 리스트에서, 애플리케이션은 중요도가 내림차순 또는 오름차순으로 정렬되고 애플리케이션의 프로세스가 내림차순 또는 오름차순으로 프로세스 우선 순위에 따라 정렬된다.
표 2를 참조하면, 표 2는 본 발명의 일 실시예에서 개시된 애플리케이션-프로세스 리스트이다.
애플리케이션 1 프로세스 1
프로세스 2
애플리케이션 2 프로세스 3
프로세스 4
프로세스 5
애플리케이션 3 프로세스 6
프로세스 7
프로세스 8
... ...
애플리케이션 n ...
시스템에서 실행되는 애플리케이션은, 주로 주요 시스템 서비스, 주요 거주 애플리케이션, 포어그라운드 애플리케이션, 시스템 서버, 포어그라운드 애플리케이션에 의해 의존되는 백그라운드 애플리케이션, 공통 시스템 서비스, 공통 상주 애플리케이션, 백그라운드 홈 애플리케이션, 사용자가 인식할 수 있는 백그라운드 애플리케이션, 시각적 애플리케이션, 전화 관리자가 보호하는 백그라운드 애플리케이션, 포어그라운드에서 최근 실행된 애플리케이션, 포어그라운드와 약한 관계인 백그라운드 애플리케이션, 사용자에 의해 습관적으로 사용되는 애플리케이션, 사전 구성된 중요도를 가진 애플리케이션, oom_adj가 2보다 더 큰 애플리케이션, 시스템에 의해 유해한 것으로 식별된 애플리케이션, 및 수동으로 유해한 것으로 식별된 애플리케이션(블랙리스트에 있음)을 포함하는 18개의 카테고리로 분류될 수 있다.
선택적 구현에서, 백그라운드 프로세스 리스트는 하나의 리스트(상기의 표 2와 같은)일 수 있거나, 또는 백그라운드 프로세스 리스트는 각각, 반환할 수 없는 리스트, 중요한 프로세스 리스트, 및 킬 가능 리스트인, 3개의 리스트(예를 들어, 상기의 표 2는 세 부분으로 나누어 세 개의 하위 리스트를 형성할 수 있다)를 포함할 수 있다. 반환할 수 없는 리스트는 주로 시스템 프로세스 및 서비스를 포함한다. 이러한 프로세스의 부족은 모든 애플리케이션의 실행에 영향을 미치게 된다. 예를 들어, 주요 시스템 서비스, 주요 상주 애플리케이션, 포어그라운드 애플리케이션, 시스템 서버, 및 포어그라운드 애플리케이션에 의해 의존되는 백그라운드 애플리케이션이 있다. 중요한 프로세스 리스트는 주로 장치 임계치 애플리케이션, 사용자 인식 애플리케이션, 및 사용자에 의해 자주 사용되는 중요한 애플리케이션, 예를 들어 공통 시스템 서비스, 공통 상주 애플리케이션, 백그라운드 홈 애플리케이션, 사용자가 인식할 수 있는 백그라운드 애플리케이션, 시각적 애플리케이션, 전화 관리자가 보호하는 백그라운드 애플리케이션, 포어그라운드에서 최근 실행된 애플리케이션, 포어그라운드와 약한 관계인 백그라운드 애플리케이션, 및 사용자에 의해 습관적으로 사용되는 애플리케이션을 포함한다. 킬 가능 리스트는 주로 사용자에 의해 습관적으로 사용되는 애플리케이션, 사전 구성된 중요도를 가진 애플리케이션, oom_adj가 2보다 더 큰 애플리케이션, 시스템에 의해 유해한 것으로 식별된 애플리케이션, 및 수동으로 유해한 것으로 식별된 애플리케이션과 같은 관련 애플리케이션 카테고리를 포함한다.
203: 백그라운드 프로세스 리스트로부터 메모리가 반환될 프로세스를 결정한다.
백그라운드 프로세스 리스트가 세 개의 하위 리스트를 포함하는 때, 메모리 반환 리스트는 다음과 같은 순서로 처리된다. 메모리 반환 중에, 킬 가능 리스트의 프로세스가 우선적으로 반환되고 킬 가능 리스트의 끝에서부터 아래에서 위로 반환이 수행된다. 킬 가능 리스트가 비어 있고 시스템 메모리 압박이 여전히 남아있는 때, 중요한 프로세스 리스트의 프로세스가 반환되고, 중요한 프로세스 리스트의 끝에서부터 아래에서 위로 반환이 수행된다. 이 원리에 기초하여, 킬 가능 리스트로부터 메모리가 반환될 프로세스가 우선적으로 결정될 수 있고, 그런 다음 중요한 프로세스 리스트로부터 메모리가 반환될 프로세스가 결정될 수 있다.
선택적으로, 상기의 리스트의 분류는 변경될 수 있다. 예를 들어, 중요 프로세스 리스트에 있고 중요도가 충분히 높지 않은 프로세스는 성능이 저하되어 킬 가능 리스트에 포함될 수 있다.
백그라운드 프로세스 리스트는 복수의 애플리케이션의 프로세스를 포함한다. 메모리가 반환될 프로세스는 복수의 애플리케이션의 프로세스 중 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 하나의 프로세스이고, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이이다. 즉, 메모리가 반환될 프로세스에 의해 점유된 메모리는 메모리 압력 값보다 더 클 수 있거나, 또는 메모리 압력 값보다 더 작을 수 있다. 메모리가 반환될 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값은 주어진 범위 내에 있다. 즉, 절댓값이 미리 설정된 임계치보다 더 작다. 미리 설정된 임계치는 사용자 정의되거나, 또는 시스템 기본값일 수 있다. 이는 본 발명의 이 실시예에서 제한되지 않는다.
메모리 압력 레벨은 하이 레벨, 미듐 레벨, 및 로우 레벨로 미리 설정되어 있다. 하이 레벨은 메모리 압력이 상대적으로 큼을 나타내고, 미듐 레벨은 메모리 압력이 보통임을 나타내며, 로우 레벨은 메모리 압력이 상대적으로 작음을 나타낸다. 또한, 제1 범위, 제2 범위, 및 제3 범위(여기서, 제1 범위는 제2 범위보다 더 작고 제2 범위는 제3 범위보다 더 작음)로 메모리 압력 값 범위가 미리 설정된다. 시스템의 현재 메모리 압력 레벨은 메모리 압력 값 범위에 기초하여 결정될 수 있다. 예를 들어, 메모리 압력 값이 제1 범위에 있는 때, 시스템의 현재 메모리 압력 레벨은 로우 레벨로 결정될 수 있다. 메모리 압력 값이 제2 범위에 있는 때, 시스템의 현재 메모리 압력 레벨은 미듐 레벨로 결정될 수 있다. 메모리 압력 값이 제3 범위에 있는 때, 시스템의 현재 메모리 압력 레벨은 하이 레벨로 결정될 수 있다.
시스템의 현재 메모리 압력 레벨이 하이 레벨로 결정되는 때, 메모리가 반환될 프로세스를 정리하는 정책이 사용되어야 한다. 이 정책에 따르면, 시스템의 가용 메모리를 증가시키기 위해, 단말기의 기존 프로세스에 의해 점유된 리소스는 파괴되고 반환되어야 한다.
시스템의 현재 메모리 압력 레벨이 미듐 레벨로 결정되는 때, 시스템 레벨 또는 애플리케이션 레벨에서 메모리가 반환될 프로세스를 정리하는 정책이 사용되어야 한다. 시스템-레벨 메모리 반환 정책에 따르면, 유휴 메모리를 증가시키는 목적을 달성하기 위해, 중요도에 기초하여 시스템 캐시가 반환될 수 있다. 하나의 애플리케이션은 하나 이상의 프로세스를 가질 수 있다. 따라서, 애플리케이션-레벨 메모리 반환 정책(예를 들어, kill, compress, drop cache)이 사용될 수 있다.
시스템의 현재 메모리 압력 레벨이 로우 레벨로 결정되는 때, 애플리케이션 중요도에 기초하여 메모리가 반환될 프로세스에 대해 프로세스-레벨 압축 또는 프로세스-레벨 캐시 반환을 수행하는 정책이 사용되어야 한다. 애플리케이션 중요도가 비교적 높으면, 메모리가 반환될 프로세스에 대해 프로세스-레벨 압축이 수행될 수 있고, 애플리케이션 중요도가 비교적 낮으면, 메모리가 반환될 프로세스에 대해 프로세스-레벨 캐시 반환이 수행될 수 있다. 메모리가 반환될 프로세스 상의 프로세스-레벨 압축은 시스템의 물리 메모리 점유를 감소시키는 목적을 달성하기 위해, 스왑 파티션을 사용하여 단말기에서 실행중인 프로세스에 의해 점유된 메모리 리소스에 대해 압축 처리를 수행하는 것이다. 메모리가 반환될 프로세스상의 프로세스-레벨 캐시 반환은 캐시 점유-메모리를 감소시키고, 유휴 메모리를 증가시켜, 메모리 할당 효율을 증가시키기 위해, 미리 단말기 내의 캐시에 의해 점유된 메모리 공간을 해제하는 것이다.
본 발명의 이 실시예에서, 메모리가 반환될 프로세스는 시스템의 현재 메모리 압력에 기초하여 백그라운드 프로세스 리스트로부터 결정될 수 있다. 이러한 방식으로, 중요한 프로세스가 실수로 킬되지 않으며, 과도하거나 또는 누락되는 프로세스의 킬이 방지된다.
204: 메모리가 반환될 프로세스에 의해 점유된 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신한다.
본 발명의 이 실시예에서, 상이한 메모리 반환 레벨은 상이한 메모리 압력 레벨에 대해 사용될 수 있고, 각 메모리 반환 정책은 하나의 인터페이스에 대응한다. 처리 명령은 메모리 반환 정책에 대응하는 인터페이스를 사용하여 시스템 커널에 송신될 수 있다. 처리 명령을 수신한 후, 메모리가 반환될 프로세스에 대응하는 메모리를 반환하기 위해, 시스템 커널은 대응하는 메모리 반환 정책을 사용하여 메모리가 반환될 프로세스에 대한 처리를 수행한다.
처리 명령은 KILL_SIG 신호를 사용하여 시스템 커널에 송신될 수 있다. 통상적으로, 하나의 처리 명령은 메모리가 반환될 하나의 프로세스의 식별자를 가질 수 있다.
메모리가 반환될 하나 이상의 프로세스가 결정될 수 있다. 하나의 프로세스가 복수의 처리 명령을 송신하는 것을 요구할 때, 하나의 프로세싱 명령을 송신한 후, 다른 처리 명령을 송신하기 전에 시스템 커널에 의해 메모리가 반환될 프로세스에 대응하는 메모리의 상태를 확인할 필요 없이, 처리 명령이 프로세스에 대해 하나씩 연속적으로 송신될 수 있다.
선택적 구현에서, 메모리가 반환될 복수의 프로세스가 결정되는 때, 시스템 커널에 처리 명령을 송신하는 단계는,
복수의 스레드를 호출하여 복수의 처리 명령을 시스템 커널에 송신하는 단계를 포함하고, 여기서 각 스레드는 하나 이상의 처리 명령을 송신하는 데 사용된다.
이 선택적 구현에서, 메모리가 반환될 복수의 프로세스가 결정되는 때, 시스템 커널에 복수의 처리 명령을 송신하도록 복수의 스레드가 호출될 수 있다. 구체적으로, 하나의 스레드에 의해 복수의 처리 명령을 송신하는 것의 구현은, 하나의 프로세스가 복수의 처리 명령을 송신하는 것을 요구할 때, 처리 명령은 하나의 프로세싱 명령을 송신한 후, 다른 처리 명령을 송신하기 전에 시스템 커널에 의해 메모리가 반환될 프로세스에 대응하는 메모리의 상태를 확인할 필요 없이, 스레드는 처리 명령을 하나씩 연속적으로 송신하는 것이다. 시스템이 메모리가 반환될 프로세스에 의해 점유되는 메모리를 반환한 후, 시스템의 현재 메모리 압력이 완화될 수 있다.
이 구현에서, 백그라운드 프로세스 반환 성능을 향상시키고 메모리 반환 효율을 향상시키기 위해, 시스템 커널이 프로세스에 대응하는 메모리 상의 반환 작동을 실제로 완료하는 것을 기다릴 필요가 없고, 메모리가 반환될 프로세스에 대응하는 메모리의 비동기 반환 메커니즘이 직접적으로 사용될 수 있다는 것을 알 수 있다.
도 2c 및 도 2d를 참조하면, 도 2c는 본 발명의 일 실시예에서 개시된 카메라 시작 시퀀스의 도면이고, 도 2d는 본 발명의 실시예에서 개시된 다른 카메라 시작 시퀀스의 도면이다. 도 2c에서, 시스템의 가용 메모리가 단지 619MB인 경우, 카메라 애플리케이션 프로그램의 시동이 개시되는 때, 메모리 반환이 수행되지 않는다. 시스템의 메모리가 시스템 경계선(waterline) 아래에 있는 때, 메모리 재사용을 위해 LMK(Low Memory Killer) 메커니즘이 사용된다. 도 2c로부터 단지 619MB 메모리에서 전체 카메라의 시동부터 카메라의 촬영 버튼의 출현까지 총 3.255초가 소요되는 것을 알 수 있다. 도 2d에서, 시스템의 가용 메모리가 단지 604MB인 경우, 카메라 애플리케이션 프로그램의 시동이 개시되는 때, 대응하는 정책을 사용하여 메모리 반환이 수행될 수 있도록, 본 개시의 실시예들의 해결책이 사용된다. 도 2d로부터 단지 604MB 메모리에서 전체 카메라의 시동부터 카메라의 촬영 버튼의 출현까지 총 1.85초가 소요되는 것을 알 수 있다.. 도 2c와 도 2d를 비교하면, 동일한 테스트 환경에서, 가용 메모리가 크게 다르지 않으면, 종래의 LMK 솔루션과 비교하여 본 개시의 솔루션에서 카메라 시동 성능이 현저하게 향상된다는 것을 알 수 있다.
도 2에 설명된 방법 프로세스에서, 제1 주요 이벤트가 검출되고 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 능동적인 메모리 반환이 수행될 수 있음을 알 수 있다. 애플리케이션이 실제로 많은 수량의 메모리를 요구하는 때, 시스템 커널은 이미 많은 수량의 가용 메모리를 반환했다. 따라서, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
도 3을 참조하면, 도 3은 본 발명의 일 실시예에서 개시된 다른 메모리 반환 방법의 개략적인 순서도다. 방법은 도 1에 도시된 메모리 제어 모듈(1223)에 적용될 수 있다. 구체적으로, 메모리 제어 모듈(1223)은 하나 이상의 스레드일 수 있거나, 또는 메모리 제어 모듈(1223)은 하나 이상의 프로세스일 수 있다. 도 3에 도시된 바와 같이, 방법은 다음의 단계들을 포함할 수 있다.
301: 제2 주요 이벤트가 검출되는 때 및 시스템이 유휴 상태에 있다고 결정되는 때 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정한다.
본 발명의 이 실시예에서, 메모리 제어 모듈(1223)은 애플리케이션 프로그램의 주요 이벤트를 검출할 수 있다. 구체적으로, 애플리케이션의 주요 정보(예를 들어, 프로세스 명칭, 사용자 식별자(UID: User Identifier) 및 프로세스 식별자(PID: Process Identifier))는 활동 관리자 서비스(AMS: Activity Manager Service)가 각 애플리케이션의 활동(activity)을 시작하는 때 후크(hook) 기능을 사용하여 획득될 수 있다. 또한, AMS는 애플리케이션 프로그램의 획득된 주요 정보를 메모리 제어 모듈(1223)에 송신할 수 있다. 따라서, 메모리 제어 모듈(1223)은 애플리케이션 프로그램의 주요 이벤트를 검출할 수 있다.
애플리케이션의 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 메모리 부족(OOM: Out of Memory), 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 전환 이벤트, 작업 전환 완료 이벤트, 브부하캐스트 이벤트, 네트워크 연결/스캐닝/상태 변경 이벤트(예를 들어, Wi-Fi, 2/3/4G, Bluetooth, 적외선, GPS(Global Positioning System) 무선 브부하캐스트, 또는 NFC(Near Field Communication)), 주변 연결 변경 이벤트(예를 들어, 충전기 삽입/제거), 경고/알람 이벤트, 전화 이벤트(전화 걸기, 신호 변경 등), 미디어 이벤트(오디오/비디오 변경 또는 녹음된 오디오 재생), 플래시 관련 이벤트, 프로그램 설치/제거 이벤트, 배터리 레벨 이벤트 등을 포함할 수 있다.
본 발명의 이 실시예에서, 시스템에 인간-기계 상호작용 작동이 현재 존재하고 시스템이 메모리 반환을 직접 수행하면, 사용자 조작에 대한 즉각적인 응답이 CPU로부터 획득될 수 없기 때문에 사용자 경험이 영향을 받을 수 있다. 이 경우, 즉각적인 메모리 반환이 수행될 수 없다.
즉각적인 메모리 반환을 요구하지 않는 이벤트는 제2 주요 이벤트로서 미리 정의될 수 있다. 제2 주요 이벤트는 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린-오프 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 전환 이벤트, 태스크 전환 완료 이벤트, 및 방송 이벤트를 포함할 수 있지만 이에 제한되지는 않는다..
제2 주요 이벤트가 검출되는 때, 시스템이 유휴 상태에 있는지가 먼저 결정된다. 그런 다음, 시스템이 유휴 상태에 있다고 결정되는 때, 시스템의 현재 가용 메모리가 판독되고 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은지가 결정된다. 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작다고 결정되는 때, 이는 현재 시스템에 메모리 부담이 존재하고 메모리 반환이 수행되어야 함을 나타낸다. 메모리 임계치는 제2 주요 이벤트에 대응하는 제1 메모리 임계치다. 시스템의 유휴 상태는 단말기의 단말기 유휴 상태 및 애플리케이션 유휴 상태를 포함할 수 있다.
선택적으로, 메모리 임계치는 정적으로 미리 설정될 수 있다. 또는 메모리 임계치는 동적으로 구성될 수 있다. 구체적인 정보에 대해서는, 도 2의 설명을 참조하고, 상세한 설명은 여기에서 다시 기술하지 않는다.
선택적으로, 시스템이 유휴 상태에 있는지는 단말기의 실행 상태를 판독하여 결정될 수 있다. 또는 시스템이 유휴 상태에 있는지는 시스템의 현재 부하 상태를 결정하여 결정될 수 있다.
시스템이 유휴 상태에 있는 두 가지 시나리오가 있다. 첫 번째 시나리오는 단말기가 사용자에 의해 사용되고 있지 않는 것이다. 예를 들면, 단말기가 대기 상태에 있는 때, 유휴 상태에 있는 것으로 간주될 수 있다. 다른 예를 들면, 애플리케이션의 시동이 완료되고 디스플레이 스크린이 나타나지만, 그 이후에 단말기와 상호 작용이 없는 때, 이 경우, 시스템은 대량의 IO 조작을 가지지 않으며 유휴 상태에 있는 것으로 간주될 수 있습니다. 두 번째 시나리오는 사용자에 의해 단말기가 사용되지만 현재 시스템 부하가 사용자 경험에 영향을 미치지 않는 때, 예를 들어, 시스템 부하가 부하 임계치보다 더 작은 때, 시스템이 유휴 상태에 있는 것으로 간주될 수 있다.
구체적으로, 시스템이 유휴 상태에 있다고 결정하는 것은 다음 단계를 포함할 수 있다:
(11) 시스템의 현재 부하가 부하 임계치보다 더 작은지를 결정한다.
(12) 시스템의 현재 부하가 부하 임계치보다 더 작은 때, 시스템이 유휴 상태에 있다고 결정한다.
이 실시예에서, 부하 임계치는 미리 설정될 수 있다. 부하 임계치는 사용자 경험에 영향을 미치는 시스템 부하의 중요한 값일 수 있다. 현재 시스템 부하가 부하 임계치보다 더 작은 것으로 결정되면, 이는 현재 시스템 부하가 사용자 경험에 영향을 미치지 않으며, 시스템이 유휴 상태에 있다고 결정될 수 있음을 나타낸다.
302: 시스템이 유휴 상태에 있는 때, 백그라운드 프로세스 리스트를 생성한다.
본 발명의 이 실시예에서, 시스템이 유휴 상태에 있는 때, 메모리 반환이 수행되어야 한다. 그러나, 백그라운드 프로세스 리스트는 동적 리스트다. 따라서, 시스템이 유휴 상태일 때, 백그라운드 프로세스 리스트도 생성되어야 한다. 이렇게하면 백그라운드 프로세스 리스트의 유효성을 보장할 수 있다.
303: 백그라운드 프로세스 리스트로부터 메모리가 반환될 프로세스를 결정한다.
304: 메모리가 반환될 프로세스에 대응하는 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신한다.
도 3에 설명된 방법 프로세스에서, 제2 주요 이벤트가 검출되는 때 그리고 시스템이 유휴 상태에 있는 때, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되고, 능동적인 메모리 반환이 수행될 수 있다는 것을 알 수 있다. 애플리케이션이 실제로 많은 수량의 메모리를 요구하는 때, 시스템 커널은 이미 많은 수량의 가용 메모리를 반환했다. 따라서, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
도 4를 참조하면, 도 4는 본 발명의 일 실시예에서 개시된 다른 메모리 반환 방법의 개략적인 순서도이다. 방법은 도 1에 도시된 메모리 제어 모듈(1223)에 적용될 수 있다. 구체적으로, 메모리 제어 모듈(1223)은 하나 이상의 스레드일 수 있거나, 또는 메모리 제어 모듈(1223)은 하나 이상의 프로세스일 수 있다. 도 4에 도시된 바와 같이, 방법은 다음의 단계들을 포함할 수 있다.
401: 제2 주요 이벤트가 감지되는 때, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은지 결정한다.
제2 주요 이벤트에 대한 구체적인 정보는 도 3의 설명을 참조하고, 상세한 설명은 여기서 다시 설명하지 않는다. 메모리 임계치에 대한 구체적인 정보에 대해서는 도 2의 설명을 참조하고, 상세한 설명은 여기서 다시 설명하지 않는다.
본 발명의 이 실시예에서, 도 3에 도시된 실시예에서, 제2 주요 이벤트가 검출되는 때, 시스템이 유휴 상태에 있는지 먼저 결정되고, 그런 다음 시스템이 유휴 상태에 있다고 결정되는 때, 시스템의 현재 가용 메모리가 판독된다. 그러나, 도 4에 도시된 실시예에서, 제2 주요 이벤트가 검출되는 때, 시스템의 현재 가용 메모리가 먼저 판독되고, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 시스템이 유휴 상태에 있는지 결정된다. 시스템이 유휴 상태에 있는 것으로 결정되는 때, 단계(402)가 수행된다.
402: 시스템이 유휴 상태에 있는 것으로 결정되는 때, 백그라운드 프로세스 리스트를 생성한다.
403: 백그라운드 프로세스 리스트로부터 메모리가 반환될 프로세스를 결정한다.
404: 메모리가 반환될 프로세스에 대응하는 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신한다.
도 4에 설명된 방법 프로세스에서, 제2 주요 이벤트가 검출되고 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 시스템이 유휴 상태에 있는 때 능동적인 메모리 반환이 수행될 수 있다는 것을 알 수 있다. 애플리케이션이 실제로 많은 수량의 메모리를 요구하는 때, 시스템 커널은 이미 많은 수량의 가용 메모리를 반환했다. 따라서, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
도 5를 참조하면, 도 5는 본 발명의 일 실시예에서 개시된 메모리 반환 장치의 개략적인 구조도이다. 메모리 반환 장치는 도 2 내지 도 4에서 설명된 메모리 반환 방법의 일부 또는 모든 단계를 수행하도록 구성될 수 있다. 그것의 구체적인 정보는 도 2 내지 도 4의 관련 설명을 참조한다. 세부 사항은 여기에서 다시 설명하지 않는다. 도 5에 도시된 바와 같이, 메모리 반환 장치(500)는, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 하나 이상의 애플리케이션의 프로세스를 포함하는 백그라운드 프로세스 리스트로부터 메모리가 반환되는 프로세스를 결정하도록 구성된 결정 유닛(501) - 메모리가 반환될 프로세스는 하나 이상의 애플리케이션의 프로세스 중 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 하나의 프로세스이고, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이임 -, 그리고 메모리가 반환될 프로세스에 의해 점유된 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하도록 구성된 송신 유닛(502)을 포함한다.
선택적으로, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제1 주요 이벤트가 검출되는 때, 트리거링되고, 메모리 임계치는 제1 주요 이벤트에 대응하는 제1 메모리 임계치이다. 제1 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 및 메모리 부족(OOM: out of memory) 이벤트 중 어느 하나를 포함한다.
선택적으로, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때, 및 시스템이 유휴 상태에 있다고 결정되는 때, 트리거링되고, 메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치이다.
선택적으로, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때, 트리거링되고, 백그라운드 프로세스 리스트로부터 메모리가 반환될 프로세스를 선택하는 작동은, 시스템이 유휴 상태에 있다고 결정되는 때, 트리거링되고, 메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치이다. 제2 주요 이벤트는 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린-오프 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 스위치 이벤트, 작업 전환 완료 이벤트, 및 브로드캐스트 이벤트 중 어느 하나를 포함한다.
선택적으로, 결정 유닛(501)은 구체적으로, 시스템의 현재 부하가 부하 임계치보다 더 작은지를 결정하고, 시스템의 현재 부하가 부하 임계치보다 더 작은 때, 시스템이 유휴 상태에 있다고 결정하도록 구성된다.
선택적으로, 메모리가 반환될 복수의 프로세스가 결정되는 때, 송신 유닛(502)은 구체적으로, 복수의 스레드를 호출하여 복수의 처리 명령을 시스템 커널에 송신하도록 구성되고, 각 스레드는 하나 이상의 처리 명령을 송신하는 데 사용된다.
선택적으로, 결정 유닛(501)은 구체적으로, 애플리케이션 중요도의 오름차순에 기초하여, 백그라운드 프로세스 리스트에 포함된 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하고, 프로세스 우선 순위의 오름차순에 기초하여, 적어도 하나의 애플리케이션에 포함된 프로세스들로부터 메모리가 반환될 프로세스를 결정하도록 구성된다.
선택적으로, 메모리 반환 장치는, 결정 유닛(501)이 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 때, 백그라운드 프로세스 리스트를 생성하도록 구성되거나, 또는 결정 유닛(501)이 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작고, 시스템이 유휴 상태에 있다고 결정하는 때, 백그라운드 프로세스 리스트를 생성하도록 구성된 생성 유닛(503)을 더 포함한다.
선택적으로, 생성 유닛(503)은 구체적으로, 백그라운드에서 현재 실행중인 각 애플리케이션의 주요 요소의 스코어를 결정하고 - 주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스 점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함함 -, 애플리케이션의 중요도를 획득하기 위해, 각 애플리케이션의 모든 주요 요소의 스코어에 대한 가중 계산을 수행하며, 모든 애플리케이션의 중요도에 기초하여 모든 애플리케이션을 정렬하고, 프로세스 우선 순위에 기초하여, 각 정렬된 애플리케이션에 포함된 프로세스를 정렬하여 백그라운드 프로세스 목록을 생성하도록 구성된다.
도 5에 도시된 메모리 반환 장치에서, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 능동적인 메모리 반환이 수행될 수 있다. 애플리케이션이 실제로 많은 수량의 메모리를 요구하는 때, 시스템 커널은 이미 많은 수량의 가용 메모리를 반환했다. 따라서, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
도 6을 참조하면, 도 6은 본 발명의 일 실시예에서 개시된 단말기의 개략적인 구조도이다. 단말기는 도 2 내지 도 4에서 설명된 메모리 반환 방법의 일부 또는 모든 단계를 수행하도록 구성될 수 있다. 그것의 구체적인 정보는 도 2 내지 도 4의 관련 설명을 참조한다. 세부 사항은 여기에서 다시 설명하지 않는다. 도 6에 도시된 바와 같이, 단말기(600)는 RF(Radio Frequency) 회로(601), 메모리(602), 입력 유닛(603), 디스플레이 유닛(604), 센서(605), 오디오 회로(606), Wi-Fi(wireless fidelity) 모듈(607), 프로세서(608), 및 전원(609)과 같은 구성요소들을 포함한다. 당업자는 도 6에 도시된 단말기 구조가 휴대 전화에 대한 제한을 구성하지 않으며, 단말기는 도면에 도시된 것보다 더 많거나 또는 더 적은 구성요소를 포함할 수 있거나, 또는 일부 구성요소가 결합될 수 있거나, 또는 구성요소가 다른 방식으로 배열될 수 있는 것을 이해할 수 있다.
RF 회로(601)는 정보를 수신하고 송신하거나, 또는 통화(call) 중에 신호를 수신 및 송신하도록 구성될 수 있다. 특히, RF 회로(601)는 기지국의 다운링크 정보를 수신하고, 처리를 위해 프로세서(608)에 다운링크 정보를 송신할 수 있다. 또한, RF 회로(601)는 관련 업링크 데이터를 기지국에 송신한다. 일반적으로, RF 회로(601)는 안테나, 적어도 하나의 증폭기, 송수신기, 커플러, 저잡음 증폭기(LNA: Low Noise Amplifier), 듀플렉서 등을 포함하지만, 이에 제한되지는 않는다. 또한, RF 회로(601)는 또한 무선 통신을 통해 네트워크 및 다른 장치들과 통신할 수 있다. GSM(Global System of Mobile Communications), GPRS(General Packet Radio Service), CDMA(Code Division Multiple Access), WCDMA(Wideband Code Division Multiple Access), LTE(Long Term Evolution), 이메일, 및 단문 메시지 서비스(SMS: short message service)를 포함하지만 이에 제한되지 않는, 임의의 통신 표준 또는 프로토콜이 무선 통신에 사용될 수 있다,
메모리(602)는 컴퓨터 프로그램을 저장하고, 컴퓨터 프로그램은 애플리케이션 프로그램(6021) 및 운영 체제 프로그램(6022)을 포함한다. 프로세서(608)는 메모리(602) 내의 컴퓨터 프로그램을 판독하고, 그런 다음 컴퓨터 프로그램에 정의된 방법을 실행하도록 구성된다. 예를 들어, 프로세서(608)는 운영 체제 프로그램(6022)을 판독하여 단말기(600)상에서 운영 체제를 실행하고, 운영 체제의 다양한 기능을 구현한다. 대안적으로, 프로세서(608)는 하나 이상의 애플리케이션 프로그램(6021)을 판독하여, 단말기(600) 상에서 애플리케이션을 실행한다. 운영 체제(6022)는 본 발명의 이 실시예에서 제공되는 메모리 반환 방법을 구현할 수 있는 컴퓨터 프로그램을 포함하여, 프로세서(608)가 운영 체제 프로그램(6022)을 판독하여 운영 체제를 실행한 후에, 운영 체제는 본 발명의 실시예들에서 제공되는 메모리 반환 기능을 가질 수 있다. 또한, 메모리(602)는 컴퓨터 프로그램과는 상이한 다른 데이터(6023)를 더 저장하고, 다른 데이터(6023)는 운영 체제(6022) 또는 애플리케이션 프로그램(6021)이 실행된 후에 생성된 데이터를 포함할 수 있으며, 데이터는 시스템 데이터(예를 들어, 운영 체제의 구성 파라미터) 및 사용자 데이터를 포함한다. 또한, 메모리(602)는 통상적으로 내부 메모리 및 외부 메모리를 포함한다. 내부 메모리는 RAM(random access memory), ROM(read only memory), CACHE(high-speed cache) 등일 수 있다. 외부 메모리는 하드 디스크, 광 디스크, USB 디스크, 플로피 디스크, 테이프 드라이브 등일 수 있다. 컴퓨터 프로그램은 일반적으로 외부 메모리에 저장되어 있고, 처리를 수행하기 전에, 프로세서는 외부 메모리로부터 내부 메모리에 컴퓨터 프로그램을 로딩한다.
입력 유닛(603)은 단말기(600)의 사용자 설정 및 기능 제어와 관련하여 입력되는 숫자 또는 문자 정보를 수신하고 키 신호 입력을 생성하도록 구성될 수 있다. 구체적으로는, 입력 유닛(603)은 터치 패널(6031) 및 다른 입력 장치(6032)를 포함할 수 있다. 터치 스크린이라고도 불리는 터치 패널(6031)은 사용자가 터치 패널(6031)에 또는 그 근방에서의 터치 조작(터치 스크린(6031) 또는 터치 패널(6031) 근방에서의 손가락, 스타일러스, 또는 임의의 다른 적절한 객체 또는 액세서리를 사용하여 사용자에 의해 수행되는 조작)을 수집하고, 미리 설정된 프로그램에 따라 대응하는 연결 장치를 구동할 수 있다. 선택적으로, 터치 패널(6031)은 두 부분, 즉 터치 검출 장치 및 터치 컨트롤러를 포함할 수 있다. 터치 검출 장치는 사용자의 터치 방위각을 검출하고, 터치 조작에 의한 신호를 검출하며, 터치 컨트롤러에 신호를 전송한다. 터치 컨트롤러는 터치 검출 장치로부터 터치 정보를 수신하고, 이를 터치 포인트 좌표로 변환하며, 터치 포인트 좌표를 프로세서(608)에 송신하고, 프로세서(608)에 의해 송신된 명령을 수신하여 명령을 실행할 수 있다. 또한, 터치 패널(6031)은 예를 들어, 저항형, 용량형, 적외선형, 탄성 표면파형 등의 복수의 유형으로 구현될 수 있다. 입력 유닛(603)은 터치 패널(6031) 외에, 다른 입력 장치(6032)를 더 포함할 수 있다. 특히, 다른 입력 장치들(6032)은 물리 키보드, 기능 키(볼륨 제어 주요 또는 스위치 키와 같은), 트랙볼, 마우스, 및 조이스틱 중 하나 이상을 포함할 수 있지만, 이것에 제한되지는 않는다.
디스플레이 유닛(604)은 사용자에 의해 입력된 정보, 사용자에게 제공되는 정보, 및 휴대 전화의 다양한 메뉴를 표시하도록 구성될 수 있다. 디스플레이 유닛(604)은 디스플레이 패널(6041)을 포함할 수 있다. 선택적으로, 디스플레이 패널(6041)은 액정 디스플레이(LCD: Liquid Crystal Display), 유기 발광 다이오드(OLED: Organic Light-Emitting Diode) 등의 형태로 구성될 수 있다. 또한, 터치 패널(6031)은 표시 패널(6041)을 덮을 수 있다. 터치 패널(6031) 상에서 또는 그 부근에서 터치 조작을 검출한 후, 터치 패널(6031)은 프로세서(608)에 터치 조작을 송신하여 터치 이벤트의 유형을 결정한다. 그런 다음 프로세서(608)는 터치 이벤트의 유형에 기초하여 디스플레이 패널(6041) 상으로 대응하는 시각적 출력을 제공한다. 도 6에서, 터치 패널(6031)과 표시 패널(6041)은 휴대 전화의 입력 및 입력 기능을 구현하기 위해 2개의 개별 부품으로 사용되지만, 일부 실시예에서, 터치 패널(6031)은 디스플레이 패널(6041)과 통합되어 휴대 전화의 입력 및 출력 기능을 구현할 수 있다.
센서(605)는 광 센서, 모션 센서, 또는 다른 센서일 수 있다. 구체적으로, 광 센서는 주변 광 센서 및 근접 센서를 포함할 수 있다. 주변 광 센서는 주변 광의 밝기에 기초하여 디스플레이 패널(6041)의 휘도를 조절할 수 있다. 근접 센서는 휴대 전화가 귀로 이동할 때, 디스플레이 패널(6041) 및/또는 백라이트를 끈다. 모션 센서의 한 종류로서, 가속도계 센서는 각 방향(일반적으로, 세 축이 있음)의 가속도 값을 검출할 수 있고, 휴대 전화가 정적일 때 중력 값과 방향을 검출할 수 있으며, 휴대 전화의 자세(예를 들어, 풍경 화면과 인물 화면간 전환, 관련 게임, 및 자력계 자세 교정)를 인식하는 어플리케이션, 진동 인식 관련 기능(만보계 및 탭과 같은) 등에 적용될 수 있다. 휴대 전화는 자이로스코프, 기압계, 습도계, 온도계, 적외선 센서, 및 다른 센서를 더 구비할 수 있으며, 상세한 설명은 여기서 설명되지 않는다.
오디오 회로(606), 스피커(6061), 및 마이크로폰(6062)은 사용자와 휴대 전화 사이에서 오디오 인터페이스를 제공할 수 있다. 오디오 회로(606)는 수신된 오디오 데이터의 변환 후에 획득되는 전기 신호를 스피커(6061)에 송신하고, 스피커(6061)는 전기 신호를 음향 신호로 변환하고, 음향 신호를 출력한다. 다른 양태에서, 마이크로폰(6062)은 수집된 음향 신호를 전기 신호로 변환한다. 오디오 회로(606)는 전기 신호를 수신하여 전기 신호를 오디오 데이터로 변환하며, 처리를 위해 프로세서(608)로 오디오 데이터를 출력한다. 처리된 오디오 데이터는, 예를 들어 RF 회로(601)를 통해 또 다른 휴대 전화에 송신되거나, 또는 오디오 데이터는 추가 처리를 위해 메모리(602)에 출력된다.
Wi-Fi는 근거리 무선 송신 기술이며, 단말기는 Wi-Fi 모듈(607)을 사용하여, 예를 들어 전자 메일의 송수신, 웹 페이지의 브라우징, 또는 스트리밍 미디어에 액세스하도록 사용자를 도와줄 수 있다. Wi-Fi 모듈(607)은 사용자에게 무선 광대역 인터넷 액세스를 제공한다. 도 6은 Wi-Fi 모듈(607)을 도시하고 있지만, Wi-Fi 모듈(607)은 단말기의 필수 구성요소가 아니며, 본 개시의 요지가 변경되지 않는 한, 필요에 따라 생략될 수도 있음을 알 수 있다.
프로세서(608)는 단말기의 제어 센터로서, 다양한 인터페이스 또는 라인을 사용하여 단말기 전체의 여러 부분을 연결하고, 단말기의 다양한 기능을 수행하고, 단말기에 대한 전반적인 모니터링을 수행하기 위해, 메모리(602)에 저장된 소프트웨어 프로그램 및/또는 모듈을 실행 또는 실시함으로써 그리고 메모리(602)에 저장된 데이터를 호출함으로써 데이터를 처리하도록 구성된다 선택적으로, 프로세서(608)는 하나 이상의 프로세서를 포함할 수 있다. 예를 들어, 프로세서(608)는 하나 이상의 중앙 처리 장치를 포함하거나, 또는 하나의 중앙 처리 장치 및 하나의 그래픽 처리 장치를 포함할 수 있다. 프로세서(608)가 복수의 프로세서를 포함하는 경우, 복수의 프로세서는 동일한 칩에 통합될 수 있거나, 또는 서로 분리된 칩일 수 있다. 하나의 프로세서는 하나 이상의 프로세서 코어를 포함할 수 있다.
단말기(600)는 구성요소들에 전력을 공급하는 전원(609)(예를 들어, 배터리)을 더 포함한다. 바람직하게, 전원은 전원 관리 시스템을 사용하여 프로세서(608)에 논리적으로 연결될 수 있다. 이러한 방식으로, 전원 관리 시스템을 사용하여 충전, 방전, 및 전력 소비 관리와 같은 기능이 구현된다.
도시되지는 않았지만, 단말기는 카메라, 블루투스 모듈 등을 더 포함할 수 있으며, 상세한 설명은 여기서 생략된다.
전술한 실시예에서, 다양한 방법 단계들이 단말기 구조에 기초하여 구현될 수 있고, 애플리케이션 계층 및 운영 체제 커널은 모두 프로세서(608)의 추상 구조의 구성요소들로서 간주될 수 있다.
본 발명의 이 실시예에서, 프로세서(608)는 메모리(602)에 저장된 프로그램 코드를 호출하여 다음의 작동을 수행하도록 구성된다.
시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 하나 이상의 애플리케이션의 프로세스를 포함하는 백그라운드 프로세스 리스트로부터 메모리가 반환되는 프로세스를 결정하는 단계 - 메모리가 반환될 프로세스는 하나 이상의 애플리케이션의 프로세스 중 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 하나의 프로세스이고, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이임 -, 그리고 메모리가 반환될 프로세스에 의해 점유된 메모리를 반환하기 위해, 메모리가 반환될 프로세스에 대한 처리를 수행하게끔 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하는 단계를 포함한다.
제시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제1 주요 이벤트가 검출되는 때 트리거링되고, 메모리 임계치는 제1 주요 이벤트에 대응하는 제1 메모리 임계치이다.
제1 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 및 메모리 부족(OOM: out of memory) 이벤트 중 어느 하나를 포함한다.
시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 및 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되고, 메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치이다.
시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 트리거링되고, 백그라운드 프로세스 리스트로부터 메모리가 반환될 프로세스를 선택하는 작동은 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되고, 메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치이다.
제2 주요 이벤트는 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린-오프 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 스위치 이벤트, 작업 전환 완료 이벤트, 및 브로드캐스트 이벤트 중 어느 하나를 포함한다.
다른 선택적 구현에서, 프로세서(608)가, 시스템이 유휴 상태에 있다고 결정하는 것은, 시스템의 현재 부하가 부하 임계치보다 더 작은지를 결정하는 단계, 그리고 시스템의 현재 부하가 부하 임계치보다 더 작은 때, 시스템이 유휴 상태에 있다고 결정하는 단계를 포함한다.
선택적 구현에서, 메모리가 반환될 복수의 프로세스가 결정되는 때, 프로세서(608)가 시스템 커널에 처리 명령을 송신하는 단계는, 복수의 스레드를 호출하여 복수의 처리 명령을 시스템 커널에 송신하는 단계를 포함하고, 각 스레드는 하나 이상의 처리 명령을 송신하는 데 사용된다.
다른 선택적 구현에서, 프로세서(608)가, 백그라운드 프로세스 리스트로부터 메모리가 반환되는 프로세스를 결정하는 단계는, 애플리케이션 중요도의 오름차순에 기초하여, 백그라운드 프로세스 리스트에 포함된 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하는 단계, 그리고 프로세스 우선 순위의 오름차순에 기초하여, 적어도 하나의 애플리케이션에 포함된 프로세스들로부터 메모리가 반환될 프로세스를 결정하는 단계를 포함한다.
다른 선택적 구현에서, 프로세서(608)는 메모리(602)에 저장된 프로그램 코드를 호출하여 다음의 작동,
시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계를 수행하도록 더 구성된다.
다른 선택적 구현에서, 프로세서(608)는 메모리(602)에 저장된 프로그램 코드를 호출하여 다음의 작동, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작고, 시스템이 유휴 상태에 있다고 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계를 수행하도록 더 구성된다.
다른 선택적 구현에서, 프로세서(608)가, 백그라운드 프로세스 리스트를 생성하는 단계는, 백그라운드에서 현재 실행중인 각 애플리케이션의 주요 요소의 스코어를 결정하는 단계 - 주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스 점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함함 -, 애플리케이션의 중요도를 획득하기 위해, 각 애플리케이션의 모든 주요 요소의 스코어에 대한 가중 계산을 수행하는 단계, 모든 애플리케이션의 중요도에 기초하여 모든 애플리케이션을 정렬하는 단계, 그리고 프로세스 우선 순위에 기초하여, 각 정렬된 애플리케이션에 포함된 프로세스를 정렬하여 백그라운드 프로세스 목록을 생성하는 단계를 포함한다.
도 6에서 설명된 단말기(600)에서, 시스템의 현재 가용 메모리가 메모리 임계치보다 작은 것으로 결정되면, 사전 행동 적 메모리 반환이 수행될 수 있다. 애플리케이션이 실제로 많은 수량의 메모리를 요구하는 때, 시스템 커널은 이미 많은 수량의 가용 메모리를 반환했다. 따라서, 단말기의 간헐적 정지의 가능성이 감소될 수 있다.
설명을 간단하게 하기 위해, 전술한 방법 실시예는 일련의 작동으로서 표현된다는 것을 유의한다. 그러나, 본 발명에 따르면, 일부 단계가 다른 순서로 수행되거나 또는 동시에 수행될 수 있기 때문에, 당업자는 본 개시가 설명된 작동 순서에 제한되지 않음을 이해할 것이다. 또한, 당업자는 본 명세서에 기재된 모든 실시예가 예시적인 실시예며, 관련된 작동 및 모듈이 반드시 본 발명에 필수적인 것은 아니라는 것을 이해해야 한다.
전술한 실시예에서, 실시예에 대한 설명은 각각의 초점을 갖는다. 일 실시예에서 상세히 설명되지 않은 부분에 대해서는, 다른 실시예에서의 관련 설명을 참조한다.
본원에 제공된 몇몇 실시예에서, 개시된 장치는 다른 방식으로 구현될 수 있다는 것을 이해해야 한다. 예를 들어, 설명된 장치 실시예는 단지 예일 뿐이다. 예를 들어, 유닛 구분은 논리적인 기능 구분일 뿐이며 실제 구현에서는 다른 구분일 수 있다. 예를 들어, 복수의 유닛 또는 구성요소가 결합되거나 또는 다른 시스템에 통합되거나, 일부 특징이 무시되거나 또는 수행되지 않을 수 있다. 또한, 디스플레이되거나 또는 논의된 상호 결합 또는 직접 결합 또는 통신 연결은 일부 인터페이스, 장치, 또는 유닛을 통한 간접 결합 또는 통신 연결일 수 있으며 전기적 또는 다른 형태로 구현될 수 있다.
별도의 부분으로 설명된 유닛은 물리적으로 분리되어 있을 수도 있거나 또는 그렇지 않을 수도 있다. 유닛으로서 표시된 부분은 물리적 유닛일 수도 있거나 또는 아닐 수도 있으며, 하나의 위치에 있거나 또는 복수의 네트워크 장치에 분산되어 있을 수 있다. 유닛의 일부 또는 전부는 실시예들의 해결책의 목적을 달성하기 위해 실제 요구 사항에 따라 선택될 수 있다.
또한, 본 개시의 실시예들에서의 기능 유닛은 하나의 처리 유닛에 통합되거나, 또는 각각의 유닛이 물리적으로 단독으로 존재할 수도 있거나, 또는 2 이상의 유닛이 하나의 유닛으로 통합될 수도 있다. 통합 유닛은 하드웨어의 형태로 구현될 수 있거나 또는 소프트웨어 기능 유닛의 형태로 구현될 수 있다.
통합 유닛이 소프트웨어 기능 유닛의 형태로 구현되고 독립적인 제품으로 판매되거나 또는 사용되는 경우, 통합 유닛은 컴퓨터 판독 가능 저장 장치에 저장될 수 있다. 이러한 이해에 기초하여, 본질적으로 본 개시의 기술적 해결책 또는 종래 기술에 기여하는 부분, 또는 기술적 해결책의 전부 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 장치에 저장되며, 본 발명의 실시예들에 설명된 방법들의 단계들 중 전부 또는 일부를 수행하도록 컴퓨터 장치(개인용 컴퓨터, 서버 또는 네트워크 장치일 수 있음)에 명령하기 위한 여러 명령을 포함한다. 전술한 저장 장치는 USB 플래시 드라이브, ROM(Read-Only Memory), RAM(Random Access Memory), 착탈식 하드 디스크, 자기 디스크, 또는 광 디스크와 같은, 프로그램 코드를 저장할 수 있는 임의의 매체를 포함한다.
당업자는 실시예들의 방법들의 단계들의 전부 또는 일부가 관련 하드웨어를 명령하는 프로그램에 의해 구현될 수 있다는 것을 이해할 수 있다. 프로그램은 컴퓨터 판독 가능 저장 장치에 저장될 수 있다. 저장 장치는 USB 플래시 드라이브, ROM(Read-Only Memory), RAM(Random Access Memory), 착탈식 하드 디스크, 자기 디스크, 또는 광 디스크와 같은, 프로그램 코드를 저장할 수 있는 임의의 매체를 포함할 수 다.
본 개시의 실시예들이 상세히 설명되었다. 본 개시의 원리 및 구현은 여기서 구체적인 예를 통해 명확하게 되었다. 본 발명의 실시예들에 대한 설명은 단지 본 개시의 방법 및 핵심 개념을 이해하는 것을 돕기 위해 제공된다. 또한, 당업자는 본 발명의 사상에 기초하여 특정 구현 및 애플리케이션 범위에서 본 개시를 변형 및 수정할 수 있다. 따라서, 본 명세서의 내용은 본 발명을 제한하는 것으로 해석되어서는 안된다.

Claims (24)

  1. 프로세서가, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 적은 때 백그라운드 프로세스 리스트로부터 타깃 프로세스를 결정하는 단계 - 백그라운드 프로세스 리스트는 하나 이상의 애플리케이션의 하나 이상의 프로세스를 포함하고, 타깃 프로세스는 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 프로세스이며, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이임 -, 그리고
    상기 프로세서가, 타깃 프로세스에 의해 점유된 메모리를 반환하게끔, 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하는 단계
    를 포함하는 메모리 반환 방법.
  2. 제1항에 있어서,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제1 주요 이벤트가 검출되는 때 트리거링되고,
    메모리 임계치는 제1 주요 이벤트에 대응하는 제1 메모리 임계치인,
    메모리 반환 방법.
  3. 제2항에 있어서,
    제1 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 및 메모리 부족(OOM: out of memory) 이벤트 중 어느 하나를 포함하는,
    메모리 반환 방법.
  4. 제1항에 있어서,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 및 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되고,
    메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치인,
    메모리 반환 방법.
  5. 제1항에 있어서,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 트리거링되고,
    백그라운드 프로세스 리스트로부터 타깃 프로세스를 선택하는 작동은 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되며,
    메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치인,
    메모리 반환 방법.
  6. 제4항 또는 제5항에 있어서,
    제2 주요 이벤트는 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린-오프 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 스위치 이벤트, 작업 전환 완료 이벤트, 및 브로드캐스트 이벤트 중 어느 하나를 포함하는,
    메모리 반환 방법.
  7. 제1항 내지 제5항 중 어느 한 항에 있어서,
    백그라운드 프로세스 리스트로부터 타깃 프로세스를 결정하는 단계는,
    애플리케이션 중요도의 오름차순에 기초하여, 백그라운드 프로세스 리스트에 포함된 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하는 단계, 그리고
    프로세스 우선 순위의 오름차순에 기초하여, 적어도 하나의 애플리케이션에 포함된 프로세스들로부터 타깃 프로세스를 결정하는 단계를 포함하는,
    메모리 반환 방법.
  8. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 메모리 반환 방법이,
    상기 프로세서가, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계
    를 더 포함하는 메모리 반환 방법.
  9. 제1항 내지 제5항 중 어느 한 항에 있어서,
    상기 메모리 반환 방법이,
    상기 프로세서가, 시스템의 현재 가용 메모리가 메모리 임계치보다 더 작고, 시스템이 유휴 상태에 있다고 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계
    를 더 포함하는 메모리 반환 방법.
  10. 제8항에 있어서,
    백그라운드 프로세스 리스트를 생성하는 단계는,
    백그라운드에서 현재 실행중인 각 애플리케이션의 주요 요소의 스코어를 결정하는 단계,
    애플리케이션의 중요도를 획득하기 위해, 각 애플리케이션의 모든 주요 요소의 스코어에 대한 가중 계산을 수행하는 단계,
    모든 애플리케이션의 중요도에 기초하여 모든 애플리케이션을 정렬하는 단계, 그리고
    프로세스 우선 순위에 기초하여, 각 정렬된 애플리케이션에 포함된 프로세스를 정렬하여 백그라운드 프로세스 목록을 생성하는 단계를 포함하고,
    주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스 점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함하는,
    메모리 반환 방법.
  11. 명령을 저장하도록 구성된 메모리, 그리고
    명령을 실행하도록 구성된 프로세서
    를 포함하고,
    프로세서는 명령을 실행하여,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 적은 때 백그라운드 프로세스 리스트로부터 타깃 프로세스를 결정하는 단계 - 백그라운드 프로세스 리스트는 하나 이상의 애플리케이션의 하나 이상의 프로세스를 포함하고, 타깃 프로세스는 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 프로세스이며, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이임 -, 그리고
    타깃 프로세스에 의해 점유된 메모리를 반환하게끔, 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하는 단계을 수행하는,
    단말 장치.
  12. 제11항에 있어서,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제1 주요 이벤트가 검출되는 때 트리거링되고,
    메모리 임계치는 제1 주요 이벤트에 대응하는 제1 메모리 임계치인,
    단말 장치.
  13. 제12항에 있어서,
    제1 주요 이벤트는 프로그램 시동 개시 이벤트, 정리 이벤트, 및 메모리 부족(OOM: out of memory) 이벤트 중 어느 하나를 포함하는,
    단말 장치.
  14. 제11항에 있어서,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때, 및 시스템이 유휴 상태에 있다고 결정되는 때, 트리거링되고,
    메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치인,
    단말 장치.
  15. 제11항에 있어서,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작은 것으로 결정하는 작동은 제2 주요 이벤트가 검출되는 때 트리거링되고,
    백그라운드 프로세스 리스트로부터 타깃 프로세스를 선택하는 작동은 시스템이 유휴 상태에 있다고 결정되는 때 트리거링되며,
    메모리 임계치는 제2 주요 이벤트에 대응하는 제2 메모리 임계치인,
    단말 장치.
  16. 제14항 또는 제15항에 있어서,
    제2 주요 이벤트는 프로그램 시동 완료 이벤트, 스크린-온 이벤트, 스크린-오프 이벤트, 스크린 터치 이벤트, 사용자 인터페이스 스위치 이벤트, 작업 전환 완료 이벤트, 및 브로드캐스트 이벤트 중 어느 하나를 포함하는,
    단말 장치.
  17. 제11항 내지 제15항 중 어느 한 항에 있어서,
    프로세서는,
    애플리케이션 중요도의 오름차순에 기초하여, 백그라운드 프로세스 리스트에 포함된 복수의 애플리케이션 중 적어도 하나의 애플리케이션을 결정하는 단계, 그리고
    프로세스 우선 순위의 오름차순에 기초하여, 적어도 하나의 애플리케이션에 포함된 프로세스들로부터 타깃 프로세스를 결정하는 단계
    을 수행하도록 더 구성된 단말 장치.
  18. 제11항 내지 제15항 중 어느 한 항에 있어서,
    프로세서는,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 작고, 시스템이 유휴 상태에 있다고 결정되는 때, 백그라운드 프로세스 리스트를 생성하는 단계
    를 수행하도록 더 구성된 단말 장치.
  19. 제18항에 있어서,
    프로세서는,
    백그라운드에서 현재 실행중인 각 애플리케이션의 주요 요소의 스코어를 결정하는 단계,
    애플리케이션의 중요도를 획득하기 위해, 각 애플리케이션의 모든 주요 요소의 스코어에 대한 가중 계산을 수행하는 단계,
    모든 애플리케이션의 중요도에 기초하여 모든 애플리케이션을 정렬하는 단계, 그리고
    프로세스 우선 순위에 기초하여, 각 정렬된 애플리케이션에 포함된 프로세스를 정렬하여 백그라운드 프로세스 목록을 생성하는 단계를 수행하도록 더 구성되고,
    주요 요소는 프로세스 우선 순위, 사용자 사용 습관, 프로세스 점유 시스템 리소스, 및 애플리케이션 관계 중 하나 이상을 포함하는,
    단말 장치.
  20. 컴퓨터 판독가능한 명령들을 포함하는 비일시적 저장 매체로서,
    하나 이상의 프로세서에 의해 컴퓨터 판독가능한 명령들이 실행되는 때 하나 이상의 프로세서가,
    시스템의 현재 가용 메모리가 메모리 임계치보다 더 적은 때 백그라운드 프로세스 리스트로부터 타깃 프로세스를 결정하는 단계 - 백그라운드 프로세스 리스트는 하나 이상의 애플리케이션의 하나 이상의 프로세스를 포함하고, 타깃 프로세스는 프로세스에 의해 점유된 메모리와 메모리 압력 값 사이의 차이의 절댓값이 미리 설정된 임계치보다 더 작은 조건을 만족하는 프로세스이며, 메모리 압력 값은 메모리 임계치 및 시스템의 현재 가용 메모리 사이의 차이임 -, 그리고
    타깃 프로세스에 의해 점유된 메모리를 반환하게끔, 시스템 커널을 트리거링하도록, 시스템 커널에 처리 명령을 송신하는 단계를 수행하도록 야기하는,
    비일시적 저장 매체.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
KR1020197010127A 2016-09-27 2017-07-13 메모리 반환 방법 및 장치 KR102245025B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201610855624.0 2016-09-27
CN201610855624.0A CN107220076B (zh) 2016-09-27 2016-09-27 一种内存回收方法及装置
PCT/CN2017/092744 WO2018059076A1 (zh) 2016-09-27 2017-07-13 一种内存回收方法及装置

Publications (2)

Publication Number Publication Date
KR20190046995A KR20190046995A (ko) 2019-05-07
KR102245025B1 true KR102245025B1 (ko) 2021-04-26

Family

ID=59928051

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197010127A KR102245025B1 (ko) 2016-09-27 2017-07-13 메모리 반환 방법 및 장치

Country Status (6)

Country Link
US (1) US11099900B2 (ko)
EP (1) EP3514684B1 (ko)
KR (1) KR102245025B1 (ko)
CN (2) CN107220076B (ko)
BR (1) BR112019005576A2 (ko)
WO (1) WO2018059076A1 (ko)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3693851B1 (en) * 2017-10-09 2023-01-11 Huawei Technologies Co., Ltd. Class unloading method and electronic device
CN109697119A (zh) * 2017-10-20 2019-04-30 中兴通讯股份有限公司 终端内存回收处理方法及装置
CN107835309B (zh) * 2017-10-31 2020-10-02 Oppo广东移动通信有限公司 后台应用清理方法、装置、存储介质及电子设备
CN107734616B (zh) * 2017-10-31 2021-01-15 Oppo广东移动通信有限公司 应用程序关闭方法、装置、存储介质和电子设备
CN107784227A (zh) * 2017-11-21 2018-03-09 深圳市沃特沃德股份有限公司 车载系统的应用保护方法和装置
CN108052388A (zh) * 2017-11-24 2018-05-18 武汉斗鱼网络科技有限公司 一种Android中内存回收方法及装置
CN108052389B (zh) * 2017-11-30 2021-11-02 努比亚技术有限公司 基于核心库的内存优化方法、移动终端及可读存储介质
CN109992438A (zh) * 2017-12-29 2019-07-09 广东欧珀移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质
CN109992523B (zh) 2017-12-29 2021-06-01 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN109992402B (zh) 2017-12-29 2021-07-09 Oppo广东移动通信有限公司 内存处理方法和装置、电子设备、计算机可读存储介质
CN109992361B (zh) * 2017-12-29 2021-08-31 Oppo广东移动通信有限公司 应用冻结方法、装置、终端及计算机可读存储介质
CN110018905B (zh) * 2018-01-10 2023-05-05 Oppo广东移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质
CN110018901B (zh) * 2018-01-10 2021-08-03 Oppo广东移动通信有限公司 内存回收方法、装置、计算机设备和计算机可读存储介质
CN110045812B (zh) * 2018-01-12 2021-01-15 Oppo广东移动通信有限公司 信息处理方法、装置、计算机设备和计算机可读存储介质
CN108307236A (zh) * 2018-02-01 2018-07-20 深圳创维-Rgb电子有限公司 一种智能电视优化内存的方法、存储介质及智能电视
CN110162396A (zh) * 2018-02-14 2019-08-23 阿里巴巴集团控股有限公司 内存回收方法、装置、系统和存储介质
KR102091409B1 (ko) * 2018-03-09 2020-03-20 삼성전자 주식회사 전자장치 및 그 제어방법
CN108563506A (zh) * 2018-04-11 2018-09-21 青岛海信移动通信技术股份有限公司 移动终端的内存回收方法及装置
CN110209548B (zh) * 2018-04-19 2023-07-14 深圳市腾讯计算机系统有限公司 服务控制方法、系统、电子设备及计算机可读存储介质
CN108595270B (zh) * 2018-04-27 2021-07-23 新华三信息安全技术有限公司 一种内存资源的回收方法及装置
CN108932163A (zh) * 2018-06-15 2018-12-04 奇酷互联网络科技(深圳)有限公司 内存管理方法、装置、可读存储介质及终端
CN109274991B (zh) * 2018-09-07 2020-11-10 苏宁智能终端有限公司 智能电视的内存管理方法及系统
CN109471708B (zh) * 2018-10-12 2023-10-31 北京奇虎科技有限公司 一种任务处理方法、装置及系统
CN111198759B (zh) * 2018-11-16 2024-04-19 深圳市优必选科技有限公司 一种内存优化方法、系统、终端设备及可读存储介质
CN109753316A (zh) * 2018-11-22 2019-05-14 惠州Tcl移动通信有限公司 智能终端及其控制方法、具有存储功能的装置
CN109582442A (zh) * 2018-11-30 2019-04-05 北京微播视界科技有限公司 内存溢出oom的处理方法、电子设备及计算机存储介质
CN109788354A (zh) * 2018-12-17 2019-05-21 新视家科技(北京)有限公司 内存管理方法及其装置、电子设备、计算机可读介质
CN109918217A (zh) * 2019-03-21 2019-06-21 联想(北京)有限公司 一种控制方法及终端
CN110083450A (zh) * 2019-04-09 2019-08-02 Oppo广东移动通信有限公司 内存回收方法、装置、电子设备及存储介质
CN111290843A (zh) * 2019-05-10 2020-06-16 展讯半导体(南京)有限公司 进程管理方法及装置
CN111988778B (zh) * 2019-05-21 2023-09-26 广东美的制冷设备有限公司 设备、wifi模块的多协议认证方法和计算机可读存储介质
CN110221921A (zh) * 2019-06-13 2019-09-10 深圳Tcl新技术有限公司 内存管理方法、终端及计算机可读存储介质
CN110245021A (zh) * 2019-06-21 2019-09-17 上海创功通讯技术有限公司 移动终端的内存管理方法、系统、电子设备及存储介质
CN110543431A (zh) * 2019-08-27 2019-12-06 Oppo(重庆)智能科技有限公司 内存优化方法及装置、电子设备、存储介质
CN112445606A (zh) * 2019-08-30 2021-03-05 华为技术有限公司 内存回收方法及装置
CN110532197B (zh) * 2019-08-30 2022-03-01 Oppo(重庆)智能科技有限公司 内存回收方法及装置、电子设备、存储介质
CN110635969B (zh) * 2019-09-30 2022-09-13 浪潮软件股份有限公司 一种流媒体直存系统的高并发测试方法
US11436041B2 (en) 2019-10-03 2022-09-06 Micron Technology, Inc. Customized root processes for groups of applications
US11474828B2 (en) 2019-10-03 2022-10-18 Micron Technology, Inc. Initial data distribution for different application processes
US11599384B2 (en) 2019-10-03 2023-03-07 Micron Technology, Inc. Customized root processes for individual applications
CN110955514A (zh) * 2019-10-09 2020-04-03 烽火通信科技股份有限公司 提高Linux业务进程利用率的方法、系统及计算机可读介质
CN112732434A (zh) * 2019-10-28 2021-04-30 华为终端有限公司 一种应用管理方法及装置
US11429445B2 (en) 2019-11-25 2022-08-30 Micron Technology, Inc. User interface based page migration for performance enhancement
CN112990421B (zh) * 2019-12-02 2023-09-05 杭州海康威视数字技术股份有限公司 优化深度学习网络的运行过程的方法、装置及存储介质
CN110888746B (zh) * 2019-12-10 2023-06-02 Oppo(重庆)智能科技有限公司 内存管理方法、装置、存储介质及电子设备
CN111124678A (zh) * 2019-12-18 2020-05-08 青岛海尔科技有限公司 内存调度处理方法及装置
CN111221650A (zh) * 2019-12-31 2020-06-02 青岛海尔科技有限公司 基于进程类型关联的系统资源回收方法及装置
CN111262737B (zh) * 2020-01-16 2023-11-28 圆山电子科技(深圳)有限公司 一种端口配置管理方法、装置、存储介质及终端
CN111367828B (zh) * 2020-02-27 2023-10-20 Oppo广东移动通信有限公司 内存压缩方法、装置、终端及存储介质
CN113326106A (zh) * 2020-02-28 2021-08-31 华为技术有限公司 一种应用管理方法及装置
CN113392037A (zh) * 2020-03-12 2021-09-14 深圳市万普拉斯科技有限公司 内存回收方法、装置、计算机设备和存储介质
CN111488316B (zh) * 2020-04-12 2023-09-22 杭州迪普科技股份有限公司 文件缓存回收方法及装置
CN113590500A (zh) * 2020-04-30 2021-11-02 华为技术有限公司 一种内存管理方法及终端设备
CN111722903A (zh) * 2020-06-16 2020-09-29 北京达佳互联信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN111831438A (zh) * 2020-07-01 2020-10-27 Oppo广东移动通信有限公司 资源分配方法、装置、存储介质及电子设备
KR20220033912A (ko) * 2020-09-10 2022-03-17 삼성전자주식회사 메모리를 관리하기 위한 전자 장치, 전자 장치의 동작 방법, 및 비 일시적 저장 매체
US11995317B2 (en) 2020-09-10 2024-05-28 Honor Device Co., Ltd. Method and apparatus for adjusting memory configuration parameter
CN114296907A (zh) * 2020-09-21 2022-04-08 华为技术有限公司 进程管控的方法和装置
KR20220102056A (ko) * 2021-01-12 2022-07-19 삼성전자주식회사 메모리를 관리하는 전자 장치와 이의 동작 방법
CN112817844A (zh) * 2021-01-25 2021-05-18 北京小米移动软件有限公司 后台进程驻留测试方法、装置、设备及存储介质
CN113268438B (zh) * 2021-05-19 2024-03-08 维沃移动通信有限公司 内存回收方法、装置和电子设备
US11650747B2 (en) * 2021-06-10 2023-05-16 Vmware, Inc. High throughput memory page reclamation
CN115809139A (zh) * 2021-06-16 2023-03-17 荣耀终端有限公司 内存管理的方法及电子设备
CN113326141A (zh) * 2021-07-19 2021-08-31 广东卓启云链科技有限公司 一种区块链节点的内存管理方法和装置
CN115686808A (zh) * 2021-07-27 2023-02-03 北京小米移动软件有限公司 安卓系统的内存管理方法和系统、电子设备、存储介质
EP4338060A1 (en) * 2021-07-29 2024-03-20 Google LLC Determining available memory on a mobile platform
CN113626203B (zh) * 2021-08-27 2024-02-13 广东九联科技股份有限公司 用于安卓系统的内存环境实时优化方法及系统
CN115878500A (zh) * 2021-09-29 2023-03-31 华为技术有限公司 内存回收方法、装置、电子设备及可读存储介质
CN115904686A (zh) * 2021-09-30 2023-04-04 华为技术有限公司 内存管理方法、电子设备、计算机存储介质和程序产品
CN116567132A (zh) * 2022-01-28 2023-08-08 荣耀终端有限公司 一种功耗控制方法及装置
TWI794000B (zh) * 2022-01-28 2023-02-21 華碩電腦股份有限公司 程式回收系統與程式回收方法
CN114845166B (zh) * 2022-05-07 2024-05-07 广东长虹电子有限公司 一种电视机待机方法、系统以及计算机可读存储介质
CN114968456B (zh) * 2022-05-07 2024-03-08 麒麟合盛网络技术股份有限公司 一种控制终端的方法和装置
CN115033396B (zh) * 2022-05-27 2023-05-02 荣耀终端有限公司 一种通信方法及相关设备
CN115309547B (zh) * 2022-07-31 2023-08-29 荣耀终端有限公司 处理异步binder调用的方法和装置
CN116049113B (zh) * 2022-08-29 2023-10-20 荣耀终端有限公司 文件系统的整理方法、电子设备及计算机可读存储介质
CN116089319B (zh) * 2022-08-30 2023-10-31 荣耀终端有限公司 内存处理方法及相关装置
CN117130767A (zh) * 2023-02-08 2023-11-28 荣耀终端有限公司 回收内存的方法、电子设备及存储介质
CN116126744B (zh) * 2023-04-04 2023-08-22 荣耀终端有限公司 一种内存回收方法、装置及终端设备
CN116185642B (zh) * 2023-04-24 2023-07-18 安徽海马云科技股份有限公司 容器内存的优化方法及装置、存储介质、电子装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332942A1 (en) 2012-06-07 2013-12-12 Apple Inc. Targeted Memory Pressure Event Notifications
US20150347181A1 (en) 2014-05-30 2015-12-03 Apple Inc. Resource management with dynamic resource policies

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453403B1 (en) * 2000-05-19 2002-09-17 Sun Microsystems, Inc. System and method for memory management using contiguous fixed-size blocks
KR20020063459A (ko) * 2001-01-29 2002-08-03 팜팜테크 주식회사 내장형 리눅스 운영체제를 위한 비사용 메모리 회수기법
CN100550766C (zh) * 2006-01-24 2009-10-14 华为技术有限公司 预定任务执行方法和管理任务执行方法、及其终端设备
CN101344861B (zh) 2007-07-10 2012-12-05 锐迪科微电子(上海)有限公司 一种智能卡内存管理方法
US9529636B2 (en) * 2009-03-26 2016-12-27 Microsoft Technology Licensing, Llc System and method for adjusting guest memory allocation based on memory pressure in virtual NUMA nodes of a virtual machine
JP2011107746A (ja) * 2009-11-12 2011-06-02 Hitachi Ltd メモリ管理方法、計算機システム及びプログラム
CN101770385B (zh) 2010-02-04 2013-05-22 青岛海信移动通信技术股份有限公司 一种基于Linux系统的设备及其应用启动的方法
CN101833512A (zh) * 2010-04-22 2010-09-15 中兴通讯股份有限公司 一种内存回收方法及其装置
CN101859279B (zh) 2010-05-21 2012-05-09 北京星网锐捷网络技术有限公司 一种内存分配、释放方法及装置
CN101908022B (zh) 2010-08-13 2012-03-28 优视科技有限公司 一种用于移动通讯设备终端的内存管理方法及其装置
US8892827B2 (en) * 2011-01-07 2014-11-18 Apple Inc. Cooperative memory management
US8522251B2 (en) * 2011-01-10 2013-08-27 International Business Machines Corporation Organizing task placement based on workload characterizations
CN102253900B (zh) 2011-06-13 2013-06-12 华中师范大学 一种Windows CE操作系统下的内存优化方法
CN102984580B (zh) 2012-11-12 2016-04-20 北京奇虎科技有限公司 内存清理方法及系统
CN103024539B (zh) * 2012-11-12 2016-06-01 北京奇虎科技有限公司 用于管理智能电视系统的方法及装置
CN103024190B (zh) 2012-12-21 2014-10-15 广东欧珀移动通信有限公司 一种智能手机内存清理方法及装置
CN103345397A (zh) * 2013-07-11 2013-10-09 北京奇虎科技有限公司 一种清理移动终端进程的方法及装置
US9176869B2 (en) * 2013-07-18 2015-11-03 Globalfoundries Inc Memory use for garbage collected computer environments
US11061840B2 (en) * 2013-09-24 2021-07-13 Red Hat Israel, Ltd. Managing network interface controller-generated interrupts
CN103631661B (zh) * 2013-11-27 2017-04-05 青岛海信电器股份有限公司 一种内存管理方法和装置
CN104679666A (zh) 2013-12-02 2015-06-03 上海联影医疗科技有限公司 一种嵌入式系统内存的管理方法及管理系统
CN105373485A (zh) 2014-09-01 2016-03-02 富泰华工业(深圳)有限公司 内存清理系统、方法及终端设备
CN104461737B (zh) * 2014-12-10 2018-01-16 广东欧珀移动通信有限公司 一种内存管理方法和装置
CN104484282B (zh) 2014-12-31 2017-07-07 广东欧珀移动通信有限公司 一种内存回收方法和装置
CN104820545B (zh) 2015-04-30 2017-04-12 深圳市奇虎智能科技有限公司 移动终端的内存清理方法和内存清理装置
CN105335099A (zh) * 2015-09-25 2016-02-17 深圳市金立通信设备有限公司 一种内存清理方法及终端
CN105511963B (zh) 2015-11-30 2019-12-10 Tcl集团股份有限公司 一种基于Android系统的内存优化方法及系统
CN105701025B (zh) 2015-12-31 2019-07-23 华为技术有限公司 一种内存回收方法及装置
CN105824702A (zh) 2016-03-22 2016-08-03 乐视云计算有限公司 一种管理程序内存占用量的方法和终端
US10552320B2 (en) * 2016-04-01 2020-02-04 Intel Corporation Using a projected out of memory score to selectively terminate a process without transitioning to a background mode

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332942A1 (en) 2012-06-07 2013-12-12 Apple Inc. Targeted Memory Pressure Event Notifications
US20150347181A1 (en) 2014-05-30 2015-12-03 Apple Inc. Resource management with dynamic resource policies

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Sang-Hoon Kim 외 3명. SmartLMK: A Memory Reclamation Scheme for Improving User-Perceived App Launch Time. 2016년 5월

Also Published As

Publication number Publication date
US11099900B2 (en) 2021-08-24
BR112019005576A2 (pt) 2019-06-11
KR20190046995A (ko) 2019-05-07
EP3514684B1 (en) 2024-05-22
CN107220076B (zh) 2018-10-30
CN109213539B (zh) 2021-10-26
US20190220318A1 (en) 2019-07-18
WO2018059076A1 (zh) 2018-04-05
CN107220076A (zh) 2017-09-29
EP3514684A4 (en) 2019-10-16
CN109213539A (zh) 2019-01-15
EP3514684A1 (en) 2019-07-24

Similar Documents

Publication Publication Date Title
KR102245025B1 (ko) 메모리 반환 방법 및 장치
CN103942113B (zh) 系统重启原因的检测方法、装置及终端设备
US10956316B2 (en) Method and device for processing reclaimable memory pages, and storage medium
US10484468B2 (en) Method and device for downloading file
CN106502703B (zh) 一种函数调用方法和装置
CN107368400B (zh) Cpu监测方法、装置、计算机可读存储介质和移动终端
US10698837B2 (en) Memory processing method and device and storage medium
CN104915241A (zh) 一种虚拟机迁移控制方法及装置
CN103699595A (zh) 一种终端浏览器的页面缓存方法和装置及终端
US9588757B2 (en) Data update method, user terminal, and data update system
CN103177217B (zh) 一种文件扫描方法、系统及客户端和服务器
CN104104711A (zh) 阅读历史处理方法和装置
CN109002547B (zh) 日志文件存储方法、移动终端及计算机可读存储介质
CN106528335A (zh) 一种数据备份方法、装置和终端
CN103197944A (zh) 一种应用程序的进程的性能确定方法和计算机系统
CN104391629A (zh) 定向发送消息的方法、显示消息的方法、服务器及终端
CN104346128A (zh) 声音事件的执行方法和设备
CN103269341B (zh) 一种间谍程序的分析方法和计算机系统
CN104717283A (zh) 文件下载的控制方法、终端及逻辑处理服务器
CN110007968B (zh) 信息处理方法、装置、计算机设备和计算机可读存储介质
CN104125202A (zh) 权重调整方法、装置和终端设备
CN112799857B (zh) 一种应用访问方法、装置、终端及存储介质
CN107871017B (zh) 一种信息过滤功能的检测方法及装置
CN114218006A (zh) 远程程序故障处理方法、装置、电子设备和存储介质
CN117407133A (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