CN108052391A - 基于线程死锁的内存优化方法、移动终端及可读存储介质 - Google Patents
基于线程死锁的内存优化方法、移动终端及可读存储介质 Download PDFInfo
- Publication number
- CN108052391A CN108052391A CN201711245213.0A CN201711245213A CN108052391A CN 108052391 A CN108052391 A CN 108052391A CN 201711245213 A CN201711245213 A CN 201711245213A CN 108052391 A CN108052391 A CN 108052391A
- Authority
- CN
- China
- Prior art keywords
- thread
- default
- deadlock
- standby time
- mobile terminal
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Telephone Function (AREA)
Abstract
本发明公开了一种基于线程死锁的内存优化方法、移动终端及可读存储介质,通过记录移动终端在每个预设使用时段内的熄屏待机时长,以建立移动终端的熄屏待机时长表,并将该熄屏待机时长表存储至预设存储区域,然后定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据该预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定移动终端的当前熄屏待机时长,最后在当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和该预设线程所处的核心进程的内存占用资源,从而能够在***运行过程中涉及的线程处于死锁状态时,在用户不知情的情况下自动清理内存,避免***频繁卡顿。
Description
技术领域
本发明涉及移动终端技术领域,尤其涉及一种基于线程死锁的内存优化方法、移动终端及可读存储介质。
背景技术
随着移动终端技术的发展,移动终端的硬件配置也越来越好,能够实现的功能也越来越多,且集成的APP(Application,应用程序)也越来越多。目前基于移动终端的不同场景的应用程序数以万计,随着用户在移动终端上安装的第三方应用和服务软件数量越来越多,基于移动终端的第三方应用的问题也越来越多。***在运行过程中,会给运行的应用进程和核心进程分配内存资源,且显示应用界面,而应用界面通常由Java框架层提供。
当Java框架层出现异常,且***运行过程中涉及的线程处于死锁状态时,运行的应用进程和核心进程占用的内存资源无法释放,而移动终端的内存资源是有限的,当内存资源不足时,容易导致***频繁卡顿,用户体验不好。
因此,如何在***运行过程中涉及的线程处于死锁状态时,在用户不知情的情况下自动清理内存,避免***频繁卡顿目前亟待解决的问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种基于线程死锁的内存优化方法、移动终端及可读存储介质,旨在解决如何在***运行过程中涉及的线程处于死锁状态时,在用户不知情的情况下自动清理内存,避免***频繁卡顿的技术问题。
为实现上述目的,本发明提供一种基于线程死锁的内存优化方法,所述基于线程死锁的内存优化方法包括以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表,并将所述熄屏待机时长表存储至预设存储区域;
定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长;
在所述当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源。
可选地,所述记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表的步骤包括:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,并将所述熄屏待机时长存储至数据库;
以间隔预设时间计算所述数据库中的数据存储量,并判断所述数据存储量是否超过预设数据存储量;
在所述数据存储量超过预设数据存储量时,根据所述数据库中所述移动终端在每个预设使用时段内的熄屏待机时长建立熄屏待机时长表。
可选地,所述定时监测预设线程是否处于死锁状态的步骤包括:
判断预设线程的线程状态值是否为预设线程状态值;
若预设线程的线程状态值为预设线程状态值,则判定预设线程处于死锁状态;
若预设线程的线程状态值为预设线程状态值,则判定预设线程未处于死锁状态。
可选地,所述根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长的步骤包括:
从所述预设存储区域中获取熄屏待机时长表,并确定处于死锁状态的预设线程的时间所处的使用时段;
从所述熄屏待机时长表中获取与所述使用时段关联的熄屏待机时长,并将所述熄屏待机时长作为所述移动终端的当前熄屏待机时长。
可选地,所述定时监测预设线程是否处于死锁状态的步骤还包括:
以间隔第一预设时间监测预设线程是否处于死锁状态;
当以间隔第一预设时间监测到预设线程未处于死锁状态时,以间隔第二预设预设时间监测预设线程是否处于死锁状态;
当以间隔第二预设时间监测到预设线程未处于死锁状态时,以间隔第三预设时间监测预设线程是否处于死锁状态。
可选地,所述以间隔第三预设时间监测预设线程是否处于死锁状态的步骤之后,所述定时监测预设线程是否处于死锁状态的步骤还包括:
当以间隔第三预设时间监测到预设线程处于死锁状态时,执行所述以间隔第一预设预设时间监测预设线程是否处于死锁状态的步骤。
可选地,所述释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源的步骤包括:
计算当前前台应用进程的内存占用资源的第一内存占用量,并计算所述预设线程所处的核心进程的内存占用资源的第二内存占用量;
根据所述第一内存占用量和所述第二内存占用量确定当前前台应用进程和所述预设线程所处的核心进程的内存释放顺序;
根据所述内存释放顺序对当前前台应用进程和所述预设线程所处的核心进程的内存占用资源进行释放。
此外,为实现上述目的,本发明还提供一种移动终端,所述移动终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于线程死锁的内存优化程序,所述基于线程死锁的内存优化程序被所述处理器执行时实现如上所述的基于线程死锁的内存优化方法的步骤。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有基于线程死锁的内存优化程序,所述基于线程死锁的内存优化程序被处理器执行时实现如上所述的基于线程死锁的内存优化方法的步骤。
本发明提供一种基于线程死锁的内存优化方法、移动终端及可读存储介质,通过记录移动终端在每个预设使用时段内的熄屏待机时长,以建立移动终端的熄屏待机时长表,并将该熄屏待机时长表存储至预设存储区域,然后定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据该预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定移动终端的当前熄屏待机时长,最后在当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和该预设线程所处的核心进程的内存占用资源,从而能够在***运行过程中涉及的线程处于死锁状态时,在用户不知情的情况下自动清理内存,避免***频繁卡顿。
附图说明
图1为实现本发明各个实施例的一种移动终端的硬件结构示意图;
图2为本发明移动终端的操作***的层级示意图;
图3为本发明基于线程死锁的内存优化方法第一实施例的流程示意图;
图4为图3中所述记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表步骤的细化流程示意图;
图5为图3中所述根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长步骤的细化流程示意图;
图6为本发明基于线程死锁的内存优化方法第二实施例中所述定时监测预设线程是否处于死锁状态步骤的细化流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特定的意义。因此,“模块”、“部件”或“单元”可以混合地使用。
终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机等固定终端。
后续描述中将以移动终端为例进行说明,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
请参阅图1,其为实现本发明各个实施例的一种移动终端的硬件结构示意图,该移动终端100可以包括:RF(Radio Frequency,射频)单元101、WiFi模块102、音频输出单元103、A/V(音频/视频)输入单元104、传感器105、显示单元106、用户输入单元107、接口单元108、存储器109、处理器110、以及电源111等部件。本领域技术人员可以理解,图1中示出的移动终端结构并不构成对移动终端的限定,移动终端可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图1对移动终端的各个部件进行具体的介绍:
射频单元101可用于收发信息或通话过程中,信号的接收和发送,具体的,将基站的下行信息接收后,给处理器110处理;另外,将上行的数据发送给基站。通常,射频单元101包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。此外,射频单元101还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global System of Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA2000(CodeDivision Multiple Access 2000,码分多址2000)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、TD-SCDMA(Time Division-Synchronous CodeDivision Multiple Access,时分同步码分多址)、FDD-LTE(Frequency DivisionDuplexing-Long Term Evolution,频分双工长期演进)和TDD-LTE(Time DivisionDuplexing-Long Term Evolution,分时双工长期演进)等。
WiFi属于短距离无线传输技术,移动终端通过WiFi模块102可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图1示出了WiFi模块102,但是可以理解的是,其并不属于移动终端的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
音频输出单元103可以在移动终端100处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将射频单元101或WiFi模块102接收的或者在存储器109中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元103还可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元103可以包括扬声器、蜂鸣器等等。
A/V输入单元104用于接收音频或视频信号。A/V输入单元104可以包括图形处理器(Graphics Processing Unit,GPU)1041和麦克风1042,图形处理器1041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元106上。经图形处理器1041处理后的图像帧可以存储在存储器109(或其它存储介质)中或者经由射频单元101或WiFi模块102进行发送。麦克风1042可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风1042接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由射频单元101发送到移动通信基站的格式输出。麦克风1042可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
移动终端100还包括至少一种传感器105,比如光传感器、运动传感器以及其他传感器。具体地,光传感器包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板1061的亮度,接近传感器可在移动终端100移动到耳边时,关闭显示面板1061和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
显示单元106用于显示由用户输入的信息或提供给用户的信息。显示单元106可包括显示面板1061,可以采用液晶显示器(Liquid Crystal Display,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板1061。
用户输入单元107可用于接收输入的数字或字符信息,以及产生与移动终端的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元107可包括触控面板1071以及其他输入设备1072。触控面板1071,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板1071上或在触控面板1071附近的操作),并根据预先设定的程式驱动相应的连接装置。触控面板1071可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器110,并能接收处理器110发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板1071。除了触控面板1071,用户输入单元107还可以包括其他输入设备1072。具体地,其他输入设备1072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种,具体此处不做限定。
进一步的,触控面板1071可覆盖显示面板1061,当触控面板1071检测到在其上或附近的触摸操作后,传送给处理器110以确定触摸事件的类型,随后处理器110根据触摸事件的类型在显示面板1061上提供相应的视觉输出。虽然在图1中,触控面板1071与显示面板1061是作为两个独立的部件来实现移动终端的输入和输出功能,但是在某些实施例中,可以将触控面板1071与显示面板1061集成而实现移动终端的输入和输出功能,具体此处不做限定。
接口单元108用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元108可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端100和外部装置之间传输数据。
存储器109可用于存储软件程序以及各种数据。存储器109可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器109可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
参照图2,其为存储程序区中存储的操作***的层级示意图,如图2所示,该操作***包括Loader(装载器)层、Kernel(***内核)层、Native(本地框架)层、Framework(框架)层(包括C++Framework层和Java Framework层)和App(应用程序)层,其中,Kernel层与Native层之间还存在HAL层(硬件抽象层),该C++Framework层和Java Framework层之间还存在JNI层,该HAL层与Kernel层之间还存在SysCall层。
该Loader层包括Boot ROM(启动服务)和Boot Loader(开机初始化程序),该BootROM主要用于当移动终端处于关机状态时,长按Power(开机)键开机,引导芯片开始从固化在ROM里的预设处代码开始执行。Boot Loader为启动操作***之前的引导程序,主要是检查RAM,初始化硬件参数等功能。
该Kernel层主要用于进行初始化进程管理、内存管理、加载Display(显示)、Camera Driver(相机驱动)和Binder Driver(Binder驱动)等相关工作,并用于创建内核工作线程kworkder、软中断线程ksoftirqd和软中断线程thermal等内核守护进程。
该Native层主要包括init孵化来的用户空间的守护进程、HAL层以及开机动画等。Init进程(由内核启动的用户级进程)会孵化出ueventd、logd、healthd、installd、adbd和lmkd等用户守护进程User Daemons;init进程还启动servicemanager(服务管家)和bootanim(开机动画)等重要服务;init进程孵化出Zygote进程,Zygote进程是操作***的第一个Java进程,Zygote是所有Java进程的父进程,Zygote进程本身是由init进程孵化而来的。
该Framework层包括Zygote进程、System Server(***服务)进程和Media Server(多媒体服务)进程,其中,Zygote进程,是由init进程通过解析init.rc文件后fork生成的,Zygote进程主要包含加载ZygoteInit类、注册Zygote Socket服务端套接字、加载虚拟机、preloadClasses和preloadResouces等;System Server进程,是由Zygote进程fork而来,System Server是Zygote孵化的第一个进程,System Server负责启动和管理整个JavaFramework,包含、ActivityManager(应用程序组件)、PowerManager(电源管理组件)和WindowManagerServer(窗口管理组件)等服务;Media Server进程,是由init进程fork而来,负责启动和管理整个C++framework,包含AudioFlinger(音频服务)、Camera Service(相机服务)和MediaPlayServer(多媒体服务)等服务。
该APP层包括APP进程,每个APP进程均由Zygote进程fork生成,Zygote进程孵化出的第一个App进程是Launcher(桌面启动器),为用户看到的桌面App,Zygote进程还会创建Browser(浏览器)、Phone(电话)和Email(邮件)等App进程,每个App至少运行在一个进程上。
处理器110是移动终端的控制中心,利用各种接口和线路连接整个移动终端的各个部分,通过运行或执行存储在存储器109内的软件程序和/或模块,以及调用存储在存储器109内的数据,执行移动终端的各种功能和处理数据,从而对移动终端进行整体监控。处理器110可包括一个或多个处理单元;优选的,处理器110可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器110中。
移动终端100还可以包括给各个部件供电的电源111(比如电池),优选的,电源111可以通过电源管理***与处理器110逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。
尽管图1未示出,移动终端100还可以包括蓝牙模块等,在此不再赘述。
基于上述移动终端硬件结构,提出本发明移动终端的各个实施例。
请参照图1,在本发明移动终端的第一实施例中,该移动终端包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的基于线程死锁的内存优化程序,所述基于线程死锁的内存优化程序被所述处理器执行时实现以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表,并将所述熄屏待机时长表存储至预设存储区域;
定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长;
在所述当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,并将所述熄屏待机时长存储至数据库;
以间隔预设时间计算所述数据库中的数据存储量,并判断所述数据存储量是否超过预设数据存储量;
在所述数据存储量超过预设数据存储量时,根据所述数据库中所述移动终端在每个预设使用时段内的熄屏待机时长建立熄屏待机时长表。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
判断预设线程的线程状态值是否为预设线程状态值;
若预设线程的线程状态值为预设线程状态值,则判定预设线程处于死锁状态;
若预设线程的线程状态值为预设线程状态值,则判定预设线程未处于死锁状态。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
从所述预设存储区域中获取熄屏待机时长表,并确定处于死锁状态的预设线程的时间所处的使用时段;
从所述熄屏待机时长表中获取与所述使用时段关联的熄屏待机时长,并将所述熄屏待机时长作为所述移动终端的当前熄屏待机时长。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
以间隔第一预设时间监测预设线程是否处于死锁状态;
当以间隔第一预设时间监测到预设线程未处于死锁状态时,以间隔第二预设预设时间监测预设线程是否处于死锁状态;
当以间隔第二预设时间监测到预设线程未处于死锁状态时,以间隔第三预设时间监测预设线程是否处于死锁状态。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
当以间隔第三预设时间监测到预设线程处于死锁状态时,以间隔第一预设预设时间监测预设线程是否处于死锁状态。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
计算当前前台应用进程的内存占用资源的第一内存占用量,并计算所述预设线程所处的核心进程的内存占用资源的第二内存占用量;
根据所述第一内存占用量和所述第二内存占用量确定当前前台应用进程和所述预设线程所处的核心进程的内存释放顺序;
根据所述内存释放顺序对当前前台应用进程和所述预设线程所处的核心进程的内存占用资源进行释放。
本发明移动终端的具体实施例与下述基于线程死锁的内存优化方法的各具体施例基本相同,在此不作赘述。
进一步地,本发明还提供一种应用于图1所示的移动终端的基于线程死锁的内存优化方法,参照图3,图3为本发明基于线程死锁的内存优化方法第一实施例的流程示意图。
在本实施例中,该基于线程死锁的内存优化方法包括:
步骤S101,记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表,并将所述熄屏待机时长表存储至预设存储区域;
该基于线程死锁的内存优化方法应用图1所示的移动终端,该移动终端包括智能手机和平板电脑等。本发明通过记录该移动终端在每个预设使用时段内的熄屏待机时长,以建立该移动终端的熄屏待机时长表,并将该熄屏待机时长表存储至预设存储区域。
具体地,参照图4,图4为图3中所述步骤S101的细化流程示意图,该步骤S101包括:
步骤S1011,记录所述移动终端在每个预设使用时段内的熄屏待机时长,并将所述熄屏待机时长存储至数据库;
步骤S1012,以间隔预设时间计算所述数据库中的数据存储量,并判断所述数据存储量是否超过预设数据存储量;
步骤S1013,在所述数据存储量超过预设数据存储量时,根据所述数据库中所述移动终端在每个预设使用时段内的熄屏待机时长建立熄屏待机时长表。
本发明通过记录移动终端在每个预设使用时段内的熄屏待机时长,并将记录的熄屏待机时长存储至数据库,然后以间隔预设时间计算该数据库中的数据存储量,并判断该数据存储量是否超过预设数据存储量,最后在该数据存储量超过预设数据存储量时,根据该数据库中所述移动终端在每个预设使用时段内的熄屏待机时长建立熄屏待机时长表,该预设使用时段包括凌晨、早上、中午、下午、晚间,半夜、且对应的时间段分别为02:00至06:00、6:00至10:00、10:00至14:00、14:00至18:00、18:00至22:00和22:00至24:00。需要说明的是,该预设使用时段可由本领域技术人员基于实际情况进行设置,本实施例对此不作具体限定。
步骤S102,定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长;
由移动终端的操作***可知,操作***的整体架构从底层到APP层,分Loader层、Kernel层、Native层、C++框架层、Java框架层、再到APP;从进程的依赖关系和依赖程度上,且在***内存中运行的地址空间上进行划分,操作***可以分内核层和用户层,内核层包括Loader层和Kernel层,用户层包括Native层、C++框架层、Java框架层和APP层。移动终端的显示界面,通常由Kernel层和框架层提供,当Kernel层出现异常时,即出现内核错误时,移动终端会重启,而在框架层出现异常,且Watchdog机制涉及的线程不处于死锁时,移动终端不重启,而Watchdog机制涉及的线程处于死锁时,运行的应用进程和核心进程占用的内存资源无法释放,而移动终端的内存资源是有限的,当内存资源不足时,容易导致***频繁卡顿,甚至导致***重启,此外,在***重启过程中,移动终端处于黑屏状态,无法实现在***重启的同时提供友好界面展示,用户体验不好。因此,在框架层出现异常,且Watchdog机制涉及的线程处于死锁时,需要对内存进行清理,避免***频繁卡顿或重启。
针对上述问题,该移动终端定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据该预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定移动终端的当前熄屏待机时长,该预设线程包括EventHub线程、InputReader线程、InputDispatcher线程和InputManagerService线程,即定时监测预设线程,即EventHub线程、InputReader线程、InputDispatcher线程和InputManagerService线程是否处于死锁状态,并在EventHub线程、InputReader线程、InputDispatcher线程或InputManagerService线程处于死锁状态时,根据该预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定移动终端的当前熄屏待机时长。该当前前台应用进程为移动终端当前正在运行的程序应用进程,即移动终端当前显示界面所属的应用进程。
具体地,在本实施例中,定时监测预设线程是否处于死锁状态的步骤包括:
判断预设线程的线程状态值是否为预设线程状态值;
若预设线程的线程状态值为预设线程状态值,则判定预设线程处于死锁状态;
若预设线程的线程状态值为预设线程状态值,则判定预设线程未处于死锁状态。
该移动终端定时获取预设线程的线程状态值,即获取EventHub线程、InputReader线程、InputDispatcher线程和InputManagerService线程的线程状态值,并判断该线程状态值是否为预设线程状态值,如果该线程状态值为预设线程状态值,则判定对应的线程处于死锁状态,如果该线程状态值不为预设线程状态值,则判定对应的线程不处于死锁状态。该线程状态值包括Blocked、Active和Waiting Timeout等,该预设线程状态值为Blocked,需要说明的是,监测预设线程是否处于死锁状态的定时时间、该预设线程状态值和线程状态值可由本领域技术人员根据实际情况进行设置,本实施例对此不作具体限制。此外,移动终端还可以通过尝试获取锁并释放锁的方式,判断预设线程是否处于死锁状态,即移动终端能够获取到锁,则判定预设线程不处于死锁状态,而移动终端不能获取到锁,则判定预设线程处于死锁状态。
在具体实施中,监测预设线程是否处于死锁状态的定时时间可基于监测到的预设线程的当前状态进行变化,具体地,该移动终端当监测预设线程不处于死锁状态,且定时监测时间较小时,延长定时监测时间,而当监测到预设线程处于死锁状态,且定时监测时间较大时,缩短定时监测时间。
具体地,参照图5,图5为图4中所述步骤S102的细化流程示意图,该步骤S102包括:
步骤S1021,从所述预设存储区域中获取熄屏待机时长表,并确定处于死锁状态的预设线程的时间所处的使用时段;
步骤S1022,从所述熄屏待机时长表中获取与所述使用时段关联的熄屏待机时长,并将所述熄屏待机时长作为所述移动终端的当前熄屏待机时长。
该移动终端在监测到预设线程处于死锁状态时,从预设存储区域中获取熄屏待机时长表,并确定处于死锁状态的预设线程的时间所处的使用时段,然后从该熄屏待机时长表中获取与该使用时段关联的熄屏待机时长,并将与该使用时段关联的熄屏待机时长确定为移动终端的当前熄屏待机时长。
步骤S103,在所述当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源。
该移动终端在当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和该预设线程所处的核心进程(system_server进程)的内存占用资源,具体为根据预设资源类型对移动终端的内存进行扫描,以获取当前前台应用进程和system_server进程的内存占用资源,并释放当前前台应用进程和system_server进程的内存占用资源。该预设资源类型的占用资源包括***类占用资源,应用类占用资源,对象类占用资源、数据库类占用资源和资产类占用资源,该***类占用资源包括Native Heap、Dalvik Heap、Dalvik Other、Stack、Ashmem、Other dev、.so mmap、apk mmap、.ttf mmap、.dex mmap、oat mmap、.art mmap、Other mmap、GL mtrack和Unknown等资源,该应用类占用资源包括Java Heap堆栈、NativeHeap堆栈、Code指针、Stack、Graphics、Private Other和System等资源,该对象类占用资源包括Views、AppContexts、Assets、Local Binders、Parcel memory、Death Recipients等资源,该数据库类占用资源包括memory_used、pagecache_overflow等资源,该资产类占用资源包括.ttf等资源。需要说明的是,该预设阈值可由本领域技术人员基于实际情况进行设置,本实施例对此不作具体限制。
在具体实施中,当监测到预设线程,即EventHub线程、InputReader线程、InputDispatcher线程或InputManagerService线程处于死锁状态时,获取当前前台应用进程和system_server进程的进程基础信息,并将该进程基础信息存储至预设存储区域,然后在当前前台应用进程和system_server进程的内存占用资源完成后,基于预设存储区域中的进程基础信息恢复对应的程序应用进程和***核心进程。该进程基础信息包括进程名称、优先级、是否为前台进程、是否为后台进行和进程的栈信息等,进程的栈信息包括进程类别、是否有关联的显示窗口、是否有关联的应用等信息,进程的栈信息可以通过***提供的标准API接口获取到。
在本实施例中,本发明通过记录移动终端在每个预设使用时段内的熄屏待机时长,以建立移动终端的熄屏待机时长表,并将该熄屏待机时长表存储至预设存储区域,然后定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据该预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定移动终端的当前熄屏待机时长,最后在当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和该预设线程所处的核心进程的内存占用资源,从而能够在***运行过程中涉及的线程处于死锁状态时,在用户不知情的情况下自动清理内存,避免***频繁卡顿。
进一步地,参照图6,基于图1所示的移动终端和上述第一实施例提出了本发明基于线程死锁的内存优化方法的第二实施例,与前述实施例的区别在于,该步骤S102中定时监测预设线程是否处于死锁状态的步骤包括:
步骤S1023,以间隔第一预设时间监测预设线程是否处于死锁状态;
步骤S1024,当以间隔第一预设时间监测到预设线程未处于死锁状态时,以间隔第二预设预设时间监测预设线程是否处于死锁状态;
步骤S1025,当以间隔第二预设时间监测到预设线程未处于死锁状态时,以间隔第三预设时间监测预设线程是否处于死锁状态。
需要说明的是,本发明基于前述实施例提出了一种定时监测时长的具体变化方式,以下仅对此进行说明,其它可参照前述实施例。
具体地,该移动终端以间隔第一预设时间监测预设线程是否处于死锁状态,当以间隔第一预设时间监测到预设线程未处于死锁状态时,以间隔第二预设预设时间监测预设线程是否处于死锁状态,当以间隔第二预设时间监测到预设线程未处于死锁状态时,以间隔第三预设时间监测预设线程是否处于死锁状态,需要说明的是上述第一预设时间、第二预设时间和第三预设时间可由本领域技术人员根据实际情况进行设置,本实施例对此不作具体限制,以下以第一预设时间为30秒、第二预设时间为60秒和第三预设时间为120秒为例进行说明,即该移动终端间隔30秒监测预设线程是否处于死锁状态,并在监测到预设线程未处于死锁状态时,以间隔60秒监测预设线程是否处于死锁状态,而在监测到预设线程未处于死锁状态时,以间隔120秒监测预设线程是否处于死锁状态。
在本实施例中,该步骤S1025之后,还包括:
当以间隔第三预设时间监测到预设线程处于死锁状态时,执行步骤S1023,即以间隔第一预设预设时间监测预设线程是否处于死锁状态,从而实现定时监测时间的延长与缩短。
在本实施例中,本发明通过监测预设线程是否处于死锁状态,从而自动控制定时监测时间的延长与缩短,能够及时的监测到预设线程是否发生死锁,便于及时处理。
进一步地,基于图1所示的移动终端和上述第一或第二实施例,提出了本发明基于线程死锁的内存优化方法的第三实施例,与前述实施例的区别在于,该步骤S103包括:
计算当前前台应用进程的内存占用资源的第一内存占用量,并计算所述预设线程所处的核心进程的内存占用资源的第二内存占用量;
根据所述第一内存占用量和所述第二内存占用量确定当前前台应用进程和所述预设线程所处的核心进程的内存释放顺序;
根据所述内存释放顺序对当前前台应用进程和所述预设线程所处的核心进程的内存占用资源进行释放。
需要说明的是,本发明基于前述实施例提出了一种内存占用资源的具体释放方式,以下仅对此进行说明,其它可参照前述实施例。
该移动终端在当前熄屏待机时长超过预设阈值时,计算当前前台应用进程的内存占用资源的第一内存占用量,并计算该预设线程所处的核心进程(system_server进程)的内存占用资源的第二内存占用量,然后根据该第一内存占用量和该第二内存占用量确定当前前台应用进程和该预设线程所处的核心进程的内存释放顺序,并根据该内存释放顺序对当前前台应用进程和该预设线程所处的核心进程的内存占用资源进行释放。
在本实施例中,本发明基于当前前台应用进程和system_server进程的内存占用资源的大小确定当前前台应用进程和system_server进程的内存释放顺序,能够快速的释放内存占用资源,提高释放速度。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有基于线程死锁的内存优化程序,所述基于线程死锁的内存优化程序被处理器执行时实现以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表,并将所述熄屏待机时长表存储至预设存储区域;
定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长;
在所述当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,并将所述熄屏待机时长存储至数据库;
以间隔预设时间计算所述数据库中的数据存储量,并判断所述数据存储量是否超过预设数据存储量;
在所述数据存储量超过预设数据存储量时,根据所述数据库中所述移动终端在每个预设使用时段内的熄屏待机时长建立熄屏待机时长表。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
判断预设线程的线程状态值是否为预设线程状态值;
若预设线程的线程状态值为预设线程状态值,则判定预设线程处于死锁状态;
若预设线程的线程状态值为预设线程状态值,则判定预设线程未处于死锁状态。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
从所述预设存储区域中获取熄屏待机时长表,并确定处于死锁状态的预设线程的时间所处的使用时段;
从所述熄屏待机时长表中获取与所述使用时段关联的熄屏待机时长,并将所述熄屏待机时长作为所述移动终端的当前熄屏待机时长。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
以间隔第一预设时间监测预设线程是否处于死锁状态;
当以间隔第一预设时间监测到预设线程未处于死锁状态时,以间隔第二预设预设时间监测预设线程是否处于死锁状态;
当以间隔第二预设时间监测到预设线程未处于死锁状态时,以间隔第三预设时间监测预设线程是否处于死锁状态。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
当以间隔第三预设时间监测到预设线程处于死锁状态时,以间隔第一预设预设时间监测预设线程是否处于死锁状态。
进一步地,所述基于线程死锁的内存优化程序被所述处理器执行时还实现以下步骤:
计算当前前台应用进程的内存占用资源的第一内存占用量,并计算所述预设线程所处的核心进程的内存占用资源的第二内存占用量;
根据所述第一内存占用量和所述第二内存占用量确定当前前台应用进程和所述预设线程所处的核心进程的内存释放顺序;
根据所述内存释放顺序对当前前台应用进程和所述预设线程所处的核心进程的内存占用资源进行释放。
本发明计算机可读存储介质的具体实施例与上述基于线程死锁的内存优化方法的各具体实施例基本相同,在此不作赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于线程死锁的内存优化方法,其特征在于,所述内存优化方法应用于移动终端,所述内存优化方法包括以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表,并将所述熄屏待机时长表存储至预设存储区域;
定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长;
在所述当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源。
2.如权利要求1所述的基于线程死锁的内存优化方法,其特征在于,所述记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表的步骤包括:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,并将所述熄屏待机时长存储至数据库;
以间隔预设时间计算所述数据库中的数据存储量,并判断所述数据存储量是否超过预设数据存储量;
在所述数据存储量超过预设数据存储量时,根据所述数据库中所述移动终端在每个预设使用时段内的熄屏待机时长建立熄屏待机时长表。
3.如权利要求1所述的基于线程死锁的内存优化方法,其特征在于,所述定时监测预设线程是否处于死锁状态的步骤包括:
判断预设线程的线程状态值是否为预设线程状态值;
若预设线程的线程状态值为预设线程状态值,则判定预设线程处于死锁状态;
若预设线程的线程状态值为预设线程状态值,则判定预设线程未处于死锁状态。
4.如权利要求1所述的基于线程死锁的内存优化方法,其特征在于,所述根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长的步骤包括:
从所述预设存储区域中获取熄屏待机时长表,并确定处于死锁状态的预设线程的时间所处的使用时段;
从所述熄屏待机时长表中获取与所述使用时段关联的熄屏待机时长,并将所述熄屏待机时长作为所述移动终端的当前熄屏待机时长。
5.如权利要求1-4中任一项所述的基于线程死锁的内存优化方法,其特征在于,所述定时监测预设线程是否处于死锁状态的步骤还包括:
以间隔第一预设时间监测预设线程是否处于死锁状态;
当以间隔第一预设时间监测到预设线程未处于死锁状态时,以间隔第二预设预设时间监测预设线程是否处于死锁状态;
当以间隔第二预设时间监测到预设线程未处于死锁状态时,以间隔第三预设时间监测预设线程是否处于死锁状态。
6.如权利要求5所述的基于线程死锁的内存优化方法,其特征在于,所述以间隔第三预设时间监测预设线程是否处于死锁状态的步骤之后,所述定时监测预设线程是否处于死锁状态的步骤还包括:
当以间隔第三预设时间监测到预设线程处于死锁状态时,执行所述以间隔第一预设预设时间监测预设线程是否处于死锁状态的步骤。
7.如权利要求1-4中任一项所述的基于线程死锁的内存优化方法,其特征在于,所述释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源的步骤包括:
计算当前前台应用进程的内存占用资源的第一内存占用量,并计算所述预设线程所处的核心进程的内存占用资源的第二内存占用量;
根据所述第一内存占用量和所述第二内存占用量确定当前前台应用进程和所述预设线程所处的核心进程的内存释放顺序;
根据所述内存释放顺序对当前前台应用进程和所述预设线程所处的核心进程的内存占用资源进行释放。
8.一种移动终端,其特征在于,所述移动终端包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于线程死锁的内存优化程序,所述基于线程死锁的内存优化程序被所述处理器执行时实现以下步骤:
记录所述移动终端在每个预设使用时段内的熄屏待机时长,以建立所述移动终端的熄屏待机时长表,并将所述熄屏待机时长表存储至预设存储区域;
定时监测预设线程是否处于死锁状态,并在监测到预设线程处于死锁状态时,根据所述预设存储区域中的熄屏待机时长表和处于死锁状态的预设线程的时间所处的使用时段确定所述移动终端的当前熄屏待机时长;
在所述当前熄屏待机时长超过预设阈值时,释放当前前台应用进程和所述预设线程所处的核心进程的内存占用资源,并显示预设界面。
9.如权利要求8所述的移动终端,其特征在于,所述基于线程死锁的内存优化程序被所述处理器执行时还实现如权利要求2至7中任一项所述的基于线程死锁的内存优化方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有基于线程死锁的内存优化程序,所述基于线程死锁的内存优化程序被处理器执行时实现如权利要求1至7中任一项所述的基于线程死锁的内存优化方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711245213.0A CN108052391A (zh) | 2017-11-30 | 2017-11-30 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711245213.0A CN108052391A (zh) | 2017-11-30 | 2017-11-30 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108052391A true CN108052391A (zh) | 2018-05-18 |
Family
ID=62120931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711245213.0A Pending CN108052391A (zh) | 2017-11-30 | 2017-11-30 | 基于线程死锁的内存优化方法、移动终端及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108052391A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776624A (zh) * | 2018-05-29 | 2018-11-09 | 北京小米移动软件有限公司 | 确定终端卡顿原因的方法、装置及存储介质 |
CN109271258A (zh) * | 2018-08-28 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 读写锁重入的实现方法、装置、终端及存储介质 |
CN109697128A (zh) * | 2018-12-19 | 2019-04-30 | 北京爱奇艺科技有限公司 | 一种线程维护方法、装置及电子设备 |
CN111580940A (zh) * | 2020-05-11 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 应用程序的多进程间的进程处理方法、装置及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1811719A (zh) * | 2006-02-22 | 2006-08-02 | 福建师范大学 | 一种单线程微处理器的死锁检测与干预方法 |
CN102222015A (zh) * | 2010-04-13 | 2011-10-19 | 三星电子(中国)研发中心 | 检测多线程程序中的死锁的方法及*** |
CN103761182A (zh) * | 2013-12-26 | 2014-04-30 | 上海华为技术有限公司 | 一种死锁检测方法及装置 |
CN104298612A (zh) * | 2014-09-30 | 2015-01-21 | 北京金山安全软件有限公司 | 移动终端中清理内存的方法、装置和移动终端 |
CN104391740A (zh) * | 2014-11-11 | 2015-03-04 | 上海斐讯数据通信技术有限公司 | 解除死锁的方法 |
CN105224335A (zh) * | 2015-10-22 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 一种自动清理终端设备的控制方法、***及终端设备 |
CN106095363A (zh) * | 2016-06-03 | 2016-11-09 | 广东欧珀移动通信有限公司 | 一种终端卡顿的改善方法、装置以及终端 |
CN106202524A (zh) * | 2016-07-22 | 2016-12-07 | 努比亚技术有限公司 | 数据库及其分表装置和方法 |
CN106681933A (zh) * | 2016-11-16 | 2017-05-17 | 深圳市金立通信设备有限公司 | 一种内存管理方法及终端 |
CN106844045A (zh) * | 2016-12-31 | 2017-06-13 | 安徽金鼎机电装备制造有限公司 | 一种移动终端运行内存的清理方法及移动终端 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
-
2017
- 2017-11-30 CN CN201711245213.0A patent/CN108052391A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1811719A (zh) * | 2006-02-22 | 2006-08-02 | 福建师范大学 | 一种单线程微处理器的死锁检测与干预方法 |
CN102222015A (zh) * | 2010-04-13 | 2011-10-19 | 三星电子(中国)研发中心 | 检测多线程程序中的死锁的方法及*** |
CN103761182A (zh) * | 2013-12-26 | 2014-04-30 | 上海华为技术有限公司 | 一种死锁检测方法及装置 |
CN104298612A (zh) * | 2014-09-30 | 2015-01-21 | 北京金山安全软件有限公司 | 移动终端中清理内存的方法、装置和移动终端 |
CN104391740A (zh) * | 2014-11-11 | 2015-03-04 | 上海斐讯数据通信技术有限公司 | 解除死锁的方法 |
CN105224335A (zh) * | 2015-10-22 | 2016-01-06 | 上海斐讯数据通信技术有限公司 | 一种自动清理终端设备的控制方法、***及终端设备 |
CN106095363A (zh) * | 2016-06-03 | 2016-11-09 | 广东欧珀移动通信有限公司 | 一种终端卡顿的改善方法、装置以及终端 |
CN106202524A (zh) * | 2016-07-22 | 2016-12-07 | 努比亚技术有限公司 | 数据库及其分表装置和方法 |
CN106681933A (zh) * | 2016-11-16 | 2017-05-17 | 深圳市金立通信设备有限公司 | 一种内存管理方法及终端 |
CN106844045A (zh) * | 2016-12-31 | 2017-06-13 | 安徽金鼎机电装备制造有限公司 | 一种移动终端运行内存的清理方法及移动终端 |
CN107247630A (zh) * | 2017-06-05 | 2017-10-13 | 努比亚技术有限公司 | 线程检测方法、终端及计算机可读存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108776624A (zh) * | 2018-05-29 | 2018-11-09 | 北京小米移动软件有限公司 | 确定终端卡顿原因的方法、装置及存储介质 |
CN109271258A (zh) * | 2018-08-28 | 2019-01-25 | 百度在线网络技术(北京)有限公司 | 读写锁重入的实现方法、装置、终端及存储介质 |
CN109271258B (zh) * | 2018-08-28 | 2020-11-17 | 百度在线网络技术(北京)有限公司 | 读写锁重入的实现方法、装置、终端及存储介质 |
US11119832B2 (en) | 2018-08-28 | 2021-09-14 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and device for implementing read-write lock reentry, terminal and storage medium |
CN109697128A (zh) * | 2018-12-19 | 2019-04-30 | 北京爱奇艺科技有限公司 | 一种线程维护方法、装置及电子设备 |
CN111580940A (zh) * | 2020-05-11 | 2020-08-25 | 北京字节跳动网络技术有限公司 | 应用程序的多进程间的进程处理方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106792101B (zh) | 主页界面调整方法、装置和智能电视 | |
CN107861817A (zh) | 基于线程阻塞的内存优化方法、移动终端及可读存储介质 | |
CN107678876A (zh) | 冻屏监测与解决方法、移动终端及计算机可读存储介质 | |
CN108052390A (zh) | 基于线程阻塞的内存清理方法、移动终端及可读存储介质 | |
CN108052391A (zh) | 基于线程死锁的内存优化方法、移动终端及可读存储介质 | |
CN107807861A (zh) | 冻屏解决方法、移动终端及计算机可读存储介质 | |
CN107967177A (zh) | 基于核心进程的内存优化方法、移动终端及可读存储介质 | |
CN108415636A (zh) | 一种悬浮按钮的生成方法、移动终端及存储介质 | |
CN107590057A (zh) | 冻屏监测与解决方法、移动终端及计算机可读存储介质 | |
CN109697088A (zh) | 应用界面加载方法、移动终端及计算机可读存储介质 | |
CN107704133A (zh) | 冻屏监测与解决方法、移动终端及计算机可读存储介质 | |
CN107704363A (zh) | 冻屏监测方法、移动终端及计算机可读存储介质 | |
CN108255368A (zh) | 应用展示方法、装置及计算机可读存储介质 | |
CN109976611A (zh) | 终端设备的控制方法及终端设备 | |
CN110147186A (zh) | 一种应用的控制方法及终端设备 | |
CN107908491A (zh) | 卡屏检测与解决方法、移动终端及计算机可读存储介质 | |
CN107765922A (zh) | 卡屏检测与解决方法、移动终端及计算机可读存储介质 | |
CN107908492A (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN107704332A (zh) | 冻屏解决方法、移动终端及计算机可读存储介质 | |
CN107908478A (zh) | 内存清理方法、移动终端及计算机可读存储介质 | |
CN107861826A (zh) | 冻屏监测与解决方法、移动终端及计算机可读存储介质 | |
CN110012152A (zh) | 一种界面显示方法及终端设备 | |
CN107818036A (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN107872367A (zh) | 黑屏检测方法、移动终端及计算机可读存储介质 | |
CN106708500B (zh) | 卸载界面的显示方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180518 |