一种浏览器内存调节方法及显示设备
技术领域
本申请涉及计算机
技术领域
,特别涉及一种浏览器内存调节方法及显示设备。背景技术
在用户操作浏览器打开多个网页或者一些大型复杂网页时,有时候会出现内存迅速上升导致浏览器崩溃的情况。比如在一个浏览器中打开多个网页时,虽然网页的总体内存使用量没有达到浏览器中预设的总内存阈值,但是有可能会出现其中某个网页使用的实际内存已经迅速上升的情况,使得浏览器十分卡顿,甚至导致浏览器崩溃。
发明内容
本申请公开了一种浏览器内存调节方法及显示设备,以实现更精细的浏览器内存的调节,避免浏览器崩溃。
根据本申请实施例的第一方面,提供一种显示设备,包括:
显示器;
与所述显示器耦合的控制器,被配置用于:
当在指定浏览器上打开N个网页时,所述N个网页对应N个用于网页渲染的Render进程,其中N大于0;
调整已设置的每一Render进程对应的内存预设阈值MR为(MT–(MB+MG+MZ))/N;
所述MT为所述指定浏览器预设的总内存阈值,所述MB为针对浏览器Browser进程预设的内存阈值,所述MG为针对GPU进程预设的内存阈值,所述MZ为针对Zygote进程预设的内存阈值,所述Browser进程、GPU进程和Zygote进程为运行指定浏览器所需执行的进程。
根据本申请实施例的第二方面,提供一种浏览器内存调节方法,该方法包括:
当在指定浏览器上打开N个网页时,所述N个网页对应N个用于网页渲染的Render进程,其中N大于0;
调整已设置的每一Render进程对应的内存预设阈值MR为(MT–(MB+MG+MZ))/N;
所述MT为所述指定浏览器预设的总内存阈值,所述MB为针对浏览器Browser进程预设的内存阈值,所述MG为针对GPU进程预设的内存阈值,所述MZ为针对Zygote进程预设的内存阈值,所述Browser进程、GPU进程和Zygote进程为运行指定浏览器所需执行的进程。
本申请的实施例提供的技术方案可以包括以下有益效果:
由以上技术方案可知,本申请提供的方案中,可以根据浏览器中打开的网页的个数,动态调节网页对应的用于网页渲染的Render进程对应的内存预设阈值MR,比如当在指定浏览器上打开N个网页时,调整已设置的每一Render进程对应的内存预设阈值MR为(MT–(MB+MG+MZ))/N,从而实现对浏览器内存更精细化的管理,避免浏览器崩溃。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入申请中并构成本申请的一部分,示出了符合本申请的实施例,并与申请一起用于解释本申请的原理。
图1A中示例性示出了显示设备200与控制装置100之间操作场景的示意图;
图1B中示例性示出了图1A中控制装置100的配置框图;
图1C中示例性示出了图1A中显示设备200的配置框图;
图1D中示例性示出了显示设备200存储器中操作系统的架构配置框图;
图2是本申请实施例提供的浏览器内存调节的方法流程图;
图3是本申请实施例提供的动态调整Render进程对应的内存预设阈值MR的方法流程图;
图4是本申请实施例提供的浏览器被使用时占用的内存示意图;
图5是本申请实施例提供的一种浏览器内存调节的内存示意图;
图6是本申请实施例提供的另一种浏览器内存调节的内存示意图;
图7是本申请实施例提供的另一种浏览器内存调节的内存示意图;
图8是本申请实施例提供的一种动态调整Render进程对应的内存预设阈值MR对应的内存示意图;
图9是本申请实施例提供的一种Render进程实际占用的内存示意图;
图10是本申请实施例提供的另一种Render进程实际占用的内存示意图。
具体实施方式
为使本申请的目的、实施方式和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
基于本申请描述的示例性实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,虽然本申请中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
本申请中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(Unless otherwiseindicated)。应该理解这样使用的用语在适当情况下可以互换,例如能够根据本申请实施例图示或描述中给出那些以外的顺序实施。
此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
为便于理解本申请提供的实施例,下面首先对显示设备的结构、显示设备与控制装置的交互过程进行描述:
图1A中示例性示出了显示设备200与控制装置100之间操作场景的示意图。如图1A所示,控制装置100和显示设备200之间可以有线或无线方式进行通信。
其中,控制装置100被配置为控制显示设备200,其可接收用户输入的操作指令,且将操作指令转换为显示设备200可识别和响应的指令,起着用户与显示设备200之间交互的中介作用。如:用户通过操作控制装置100上频道加减键,显示设备200响应频道加减的操作。
控制装置100可以是遥控器100A,包括红外协议通信或蓝牙协议通信,及其他短距离通信方式等,通过无线或其他有线方式来控制显示设备200。用户可以通过遥控器上按键、语音输入、控制面板输入等输入用户指令,来控制显示设备200。如:用户可以通过遥控器上音量加减键、频道控制键、上/下/左/右的移动按键、语音输入按键、菜单键、开关机按键等输入相应控制指令,来实现控制显示设备200的功能。
控制装置100也可以是智能设备,如移动终端100B、平板电脑、计算机、笔记本电脑等。例如,使用在智能设备上运行的应用程序控制显示设备200。该应用程序通过配置可以在与智能设备关联的屏幕上,通过直观的用户界面(UI)为用户提供各种控制。
示例性的,移动终端100B可与显示设备200安装软件应用,通过网络通信协议实现连接通信,实现一对一控制操作的和数据通信的目的。如:可以使移动终端100B与显示设备200建立控制指令协议,通过操作移动终端100B上提供的用户界面的各种功能键或虚拟按钮,来实现如遥控器100A布置的实体按键的功能。也可以将移动终端100B上显示的音视频内容传输到显示设备200上,实现同步显示功能。
显示设备200可被实施为电视,可提供广播接收电视功能以及计算机支持功能的智能网络电视功能。显示设备示例的包括,数字电视、网络电视、智能电视、互联网协议电视(IPTV)等。
显示设备200,可以是液晶显示器、有机发光显示器、投影显示设备。具体显示设备类型、尺寸大小和分辨率等不作限定。
显示设备200还与服务器300通过多种通信方式进行数据通信。这里可允许显示设备200通过局域网(LAN)、无线局域网(WLAN)和其他网络进行通信连接。服务器300可以向显示设备200提供各种内容和互动。示例的,显示设备200可以发送和接收信息,例如:接收电子节目指南(EPG)数据、接收软件程序更新、或访问远程储存的数字媒体库。服务器300可以一组,也可以多组,可以一类或多类服务器。通过服务器300提供视频点播和广告服务等其他网络服务内容。
图1B中示例性示出了控制装置100的配置框图。如图1B所示,控制装置100包括控制器110、存储器120、通信器130、用户输入接口140、输出接口150、供电电源160。
控制器110包括随机存取存储器(RAM)111、只读存储器(ROM)112、处理器113、通信接口以及通信总线。控制器110用于控制控制装置100的运行和操作,以及内部各部件之间的通信协作、外部和内部的数据处理功能。
示例性的,当检测到用户按压在遥控器100A上布置的按键的交互或触摸在遥控器100A上布置的触摸面板的交互时,控制器110可控制产生与检测到的交互相应的信号,并将该信号发送到显示设备200。
存储器120,用于在控制器110的控制下存储驱动和控制控制装置100的各种运行程序、数据和应用。存储器120,可以存储用户输入的各类控制信号指令。
通信器130在控制器110的控制下,实现与显示设备200之间控制信号和数据信号的通信。如:控制装置100经由通信器130将控制信号(例如触摸信号或按钮信号)发送至显示设备200上,控制装置100可经由通信器130接收由显示设备200发送的信号。通信器130可以包括红外信号接口131和射频信号接口132。例如:红外信号接口时,需要将用户输入指令按照红外控制协议转化为红外控制信号,经红外发送模块进行发送至显示设备200。再如:射频信号接口时,需将用户输入指令转化为数字信号,然后按照射频控制信号调制协议进行调制后,由射频发送端子发送至显示设备200。
用户输入接口140,可包括麦克风141、触摸板142、传感器143、按键144等中至少一者,从而用户可以通过语音、触摸、手势、按压等将关于控制显示设备200的用户指令输入到控制装置100。
输出接口150,通过将用户输入接口140接收的用户指令输出至显示设备200,或者,输出由显示设备200接收的图像或语音信号。这里,输出接口150可以包括LED接口151、产生振动的振动接口152、输出声音的声音输出接口153和输出图像的显示器154等。例如,遥控器100A可从输出接口150接收音频、视频或数据等输出信号,并且将输出信号在显示器154上显示为图像形式、在声音输出接口153输出为音频形式或在振动接口152输出为振动形式。
供电电源160,用于在控制器110的控制下为控制装置100各元件提供运行电力支持。形式可以为电池及相关控制电路。
图1C中示例性示出了显示设备200的硬件配置框图。如图1C所示,显示设备200中可以进一步包括调谐解调器210、通信器220、检测器230、外部装置接口240、控制器250、存储器260、用户接口265、视频处理器270、显示器275、音频处理器280、音频输入接口285、供电电源290。
调谐解调器210,通过有线或无线方式接收广播电视信号,可以进行放大、混频和谐振等调制解调处理,用于从多个无线或有线广播电视信号中解调出用户所选择的电视频道的频率中所携带的音视频信号,以及附加信息(例如EPG数据)。
调谐解调器210,可根据用户选择,以及由控制器250控制,响应用户选择的电视频道的频率以及该频率所携带的电视信号。
调谐解调器210,根据电视信号的广播制式不同,可以接收信号的途径有很多种,诸如:地面广播、有线广播、卫星广播或互联网广播等;以及根据调制类型不同,可以数字调制方式或模拟调制方式;以及根据接收电视信号的种类不同,可以解调模拟信号和数字信号。
在其他一些示例性实施例中,调谐解调器210也可在外部设备中,如外部机顶盒等。这样,机顶盒通过调制解调后输出电视信号,经过外部装置接口240输入至显示设备200中。
通信器220,是用于根据各种通信协议类型与外部设备或外部服务器进行通信的组件。例如显示设备200可将内容数据发送至经由通信器220连接的外部设备,或者,从经由通信器220连接的外部设备浏览和下载内容数据。通信器220可以包括WIFI模块221、蓝牙通信协议模块222、有线以太网通信协议模块223等网络通信协议模块或近场通信协议模块,从而通信器220可根据控制器250的控制接收控制装置100的控制信号,并将控制信号实现为WIFI信号、蓝牙信号、射频信号等。
检测器230,是显示设备200用于采集外部环境或与外部交互的信号的组件。检测器230可以包括图像采集器231,如相机、摄像头等,可以用于采集外部环境场景,以自适应变化显示设备200的显示参数;以及用于采集用户的属性或与用户交互手势,以实现显示设备与用户之间互动的功能。还可以包括光接收器232,用于采集环境光线强度,以自适应显示设备200的显示参数变化等。
在其他一些示例性实施例中,检测器230,还可以包括温度传感器,如通过感测环境温度,显示设备200可自适应调整图像的显示色温。示例性的,当温度偏高的环境时,可调整显示设备200显示图像色温偏冷色调;当温度偏低的环境时,可以调整显示设备200显示图像色温偏暖色调。
在其他一些示例性实施例中,检测器230,还可以包括声音采集器,如麦克风,可以用于接收用户的声音,如用户控制显示设备200的控制指令的语音信号;或者,可以采集用于识别环境场景类型的环境声音,实现显示设备200可以自适应环境噪声。
外部装置接口240,是提供控制器210控制显示设备200与外部设备间数据传输的组件。外部装置接口240可按照有线/无线方式与诸如机顶盒、游戏装置、笔记本电脑等外部设备连接,可接收外部设备的诸如视频信号(例如运动图像)、音频信号(例如音乐)、附加信息(例如EPG)等数据。
其中,外部装置接口240可以包括:高清多媒体接口(HDMI)端子241、复合视频消隐同步(CVBS)端子242、模拟或数字分量端子243、通用串行总线(USB)端子244、组件(Component)端子(图中未示出)、红绿蓝(RGB)端子(图中未示出)等任一个或多个。
控制器250,通过运行存储在存储器260上的各种软件控制程序(如操作系统和各种应用程序),来控制显示设备200的工作和响应用户的操作。
如图1C所示,控制器250包括随机存取存储器(RAM)251、只读存储器(ROM)252、图形处理器253、CPU处理器254、通信接口255、以及通信总线256。其中,RAM251、ROM252以及图形处理器253、CPU处理器254通信接口255通过通信总线256相连接。
ROM252,用于存储各种系统启动指令。如在接收到开机信号时,显示设备200电源开始启动,CPU处理器254运行ROM252中的系统启动指令,将存储在存储器260的操作系统拷贝至RAM251中,以开始运行启动操作系统。当操作系统启动完成后,CPU处理器254再将存储器260中各种应用程序拷贝至RAM251中,然后,开始运行启动各种应用程序。
图形处理器253,用于产生各种图形对象的屏幕图像,如图标、图像以及操作菜单等。图形处理器253可以包括运算器,用于通过接收用户输入各种交互指令进行运算,进而根据显示属性显示各种对象;以及包括渲染器,用于产生基于运算器得到的各种对象,将进行渲染的结果显示在显示器275上。
CPU处理器254,用于执行存储在存储器260中的操作系统和应用程序指令。以及根据接收的用户输入指令,来执行各种应用程序、数据和内容的处理,以便最终显示和播放各种音视频内容。
在一些示例性实施例中,CPU处理器254,可以包括多个处理器。多个处理器可包括一个主处理器以及多个或一个子处理器。主处理器,用于在显示设备预加载模式中执行显示设备200的一些初始化操作,和/或,在正常模式下显示画面的操作。多个或一个子处理器,用于执行在显示设备待机模式等状态下的一种操作。
通信接口255,可包括第一接口到第n接口。这些接口可以是经由网络被连接到外部设备的网络接口。
控制器250可以控制显示设备200的整体操作。例如:响应于接收到用于选择在显示器275上显示的GUI对象的用户输入命令,控制器250便可以执行与由用户输入命令选择的对象有关的操作。
其中,该对象可以是可选对象中的任何一个,例如超链接或图标。该与所选择的对象有关的操作,例如显示连接到超链接页面、文档、图像等操作,或者执行与图标相对应的程序的操作。该用于选择GUI对象的用户输入命令,可以是通过连接到显示设备200的各种输入装置(例如,鼠标、键盘、触摸板等)输入命令或者是与用户说出语音相对应的语音命令。
存储器260,用于存储驱动和控制显示设备200运行的各种类型的数据、软件程序或应用程序。存储器260可以包括易失性和/或非易失性存储器。而术语“存储器”包括存储器260、控制器250的RAM251和ROM252、或显示设备200中的存储卡。
在一些实施例中,存储器260具体用于存储驱动显示设备200中控制器250的运行程序;存储显示设备200内置的和用户从外部设备下载的各种应用程序;存储用于配置由显示器275提供的各种GUI、与GUI相关的各种对象及用于选择GUI对象的选择器的视觉效果图像等数据。
在一些实施例中,存储器260具体用于存储调谐解调器210、通信器220、检测器230、外部装置接口240、视频处理器270、显示器275、音频处理器280等的驱动程序和相关数据,从外部装置接口接收的外部数据(例如音视频数据)或用户接口接收的用户数据(例如按键信息、语音信息、触摸信息等)。
在一些实施例中,存储器260具体存储用于表示操作系统(OS)的软件和/或程序,这些软件和/或程序可包括,例如:内核、中间件、应用编程接口(API)和/或应用程序。示例性的,内核可控制或管理系统资源,以及其它程序所实施的功能(如所述中间件、API或应用程序);同时,内核可以提供接口,以允许中间件、API或应用程序访问控制器,以实现控制或管理系统资源。
图1D中示例性示出了显示设备200存储器中操作系统的架构配置框图。该操作系统架构从上到下依次是应用层、中间件层和内核层。
应用层,系统内置的应用程序以及非系统级的应用程序都属于应用层,其负责与用户进行直接交互。应用层可包括多个应用程序,如NETFLIX应用程序、设置应用程序、媒体中心应用程序等。这些应用程序可被实现为Web应用,其基于WebKit引擎来执行,具体可基于HTML、层叠样式表(CSS)和JavaScript来开发并执行。
这里,HTML,全称为超文本标记语言(HyperText Markup Language),是一种用于创建网页的标准标记语言,通过标记标签来描述网页,HTML标签用以说明文字、图形、动画、声音、表格、链接等,浏览器会读取HTML文档,解释文档内标签的内容,并以网页的形式显示出来。
CSS,全称为层叠样式表(Cascading Style Sheets),是一种用来表现HTML文件样式的计算机语言,可以用来定义样式结构,如字体、颜色、位置等的语言。CSS样式可以直接存储与HTML网页或者单独的样式文件中,实现对网页中样式的控制。
JavaScript,是一种应用于Web网页编程的语言,可以插入HTML页面并由浏览器解释执行。其中Web应用的交互逻辑都是通过JavaScript实现。JavaScript可以通过浏览器,封装JavaScript扩展接口,实现与内核层的通信,
中间件层,可以提供一些标准化的接口,以支持各种环境和系统的操作。例如,中间件层可以实现为与数据广播相关的中间件的多媒体和超媒体信息编码专家组(MHEG),还可以实现为与外部设备通信相关的中间件的DLNA中间件,还可以实现为提供显示设备内各应用程序所运行的浏览器环境的中间件等。
内核层,提供核心系统服务,例如:文件管理、内存管理、进程管理、网络管理、系统安全权限管理等服务。内核层可以被实现为基于各种操作系统的内核,例如,基于Linux操作系统的内核。
内核层也同时提供系统软件和硬件之间的通信,为各种硬件提供设备驱动服务,例如:为显示器提供显示驱动程序、为摄像头提供摄像头驱动程序、为遥控器提供按键驱动程序、为WIFI模块提供WiFi驱动程序、为音频输出接口提供音频驱动程序、为电源管理(PM)模块提供电源管理驱动等。
用户接口265,接收各种用户交互。具体的,用于将用户的输入信号发送给控制器250,或者,将从控制器250的输出信号传送给用户。示例性的,遥控器100A可将用户输入的诸如电源开关信号、频道选择信号、音量调节信号等输入信号发送至用户接口265,再由用户接口265转送至控制器250;或者,遥控器100A可接收经控制器250处理从用户接口265输出的音频、视频或数据等输出信号,并且显示接收的输出信号或将接收的输出信号输出为音频或振动形式。
在一些实施例中,用户可在显示器275上显示的图形用户界面(GUI)输入用户命令,则用户接口265通过GUI接收用户输入命令。确切的说,用户接口265可接收用于控制选择器在GUI中的位置以选择不同的对象或项目的用户输入命令。
或者,用户可通过输入特定的声音或手势进行输入用户命令,则用户接口265通过传感器识别出声音或手势,来接收用户输入命令。
视频处理器270,用于接收外部的视频信号,根据输入信号的标准编解码协议,进行解压缩、解码、缩放、降噪、帧率转换、分辨率转换、图像合成等视频数据处理,可得到直接在显示器275上显示或播放的视频信号。
示例的,视频处理器270,包括解复用模块、视频解码模块、图像合成模块、帧率转换模块、显示格式化模块等。
其中,解复用模块,用于对输入音视频数据流进行解复用处理,如输入MPEG-2流(基于数字存储媒体运动图像和语音的压缩标准),则解复用模块将其进行解复用成视频信号和音频信号等。
视频解码模块,用于对解复用后的视频信号进行处理,包括解码和缩放处理等。
图像合成模块,如图像合成器,其用于将图形生成器根据用户输入或自身生成的GUI信号,与缩放处理后视频图像进行叠加混合处理,以生成可供显示的图像信号。
帧率转换模块,用于对输入视频的帧率进行转换,如将输入的60Hz视频的帧率转换为120Hz或240Hz的帧率,通常的格式采用如插帧方式实现。
显示格式化模块,用于将帧率转换模块输出的信号,改变为符合诸如显示器显示格式的信号,如将帧率转换模块输出的信号进行格式转换以输出RGB数据信号。
显示器275,用于接收源自视频处理器270输出的图像信号,进行显示视频、图像以及菜单操控界面。例如,显示器可以显示来自调谐解调器210接收的广播信号中的视频,也可以显示来自通信器220或外部装置接口240输入的视频,还可以显示在存储器260中存储的图像。显示器275,同时显示显示设备200中产生且用于控制显示设备200的用户操控界面UI。
以及,显示器275可以包括用于呈现画面的显示屏组件以及驱动图像显示的驱动组件。或者,倘若显示器275为一种投影显示器,还可以包括一种投影装置和投影屏幕。
音频处理器280,用于接收外部的音频信号,根据输入信号的标准编解码协议,进行解压缩和解码,以及降噪、数模转换、和放大处理等音频数据处理,得到可以在扬声器286中播放的音频信号。
示例性的,音频处理器280可以支持各种音频格式。例如MPEG-2、MPEG-4、高级音频编码(AAC)、高效AAC(HE-AAC)等格式。
音频输出接口285,用于接收源自音频处理器280输出的音频信号。例如,音频输出接口可以输出经由调谐解调器210接收的广播信号中的音频,也可以输出经由通信器220或外部装置接口240输入的音频,还可以输出在存储器260中存储的音频。音频输出接口285可包括扬声器286,或输出至外接设备的发生装置的外接音响输出端子287,如耳机输出端子。
在其他一些示例性实施例中,视频处理器270可以包括一个或多个芯片组成。音频处理器280,也可以包括一个或多个芯片组成。
以及,在其他一些示例性实施例中,视频处理器270和音频处理器280,可以为单独的芯片,也可以与控制器250一起集成在一个或多个芯片中。
供电电源290,用于在控制器250的控制下,将外部电源输入的电力为显示设备200提供电源供电支持。供电电源290可以是安装在显示设备200内部的内置电源电路,也可以是安装在显示设备200外部的电源。
为便于理解本申请提供的实施例,下面结合附图对本申请实施例中技术方案作进一步详细的说明。参见图2,图2为本申请实施例提供的浏览器内存调节的方法流程图。作为一个实施例,图2所示的流程可以应用于如上所描述的显示设备。
如图2所示,该流程可以包括以下步骤:
步骤201,当在指定浏览器上打开N个网页时,所述N个网页对应N个用于网页渲染的Render进程,其中N大于0。
为了便于理解,下面先对浏览器被使用时占用的内存进行介绍:
如图4所示,浏览器被使用时占用的内存可以分为两个部分:
第一部分为打开浏览器时,自动创建的三个基本进程:Browser进程、GPU进程和Zygote进程,这三个进程在浏览器被打开后所占用的内存维持在一个稳定的值。至于这三个基本进程的创建过程和功能,可以参照相关技术,这里不再赘述。
第二部分为在浏览器中打开网页时,每打开一个网页,上述Browser进程都会创建一个对应的Render进程,该Render进程用于网页渲染,可以实现网页资源请求等功能。由于每个网页的复杂度是不一样的,因此每个网页对应的Render进程使用的内存大小存在差异,比如有的网页对应的Render进程可能使用了50MB内存,而有的网页对应的Render进程有可能使用200多MB的内存。
基于上述内容,本步骤201在指定浏览器上打开N个网页时,此时浏览器中将存在三个基本进程:Browser进程、GPU进程和Zygote进程,以及该N个网页对应的N个Render进程。
步骤202,调整已设置的每一Render进程对应的内存预设阈值MR为(MT–(MB+MG+MZ))/N。
在本申请实施例中,上述MT为指定浏览器中预设的总内存阈值,该总内存阈值用于限制浏览器使用的总内存,如果浏览器使用的总内存超过总内存阈值,可以触发对浏览器进行处理,比如关闭浏览器打开的网页以清除内存等。
进一步的,上述MB为针对浏览器Browser进程预设的内存阈值,MG为针对GPU进程预设的内存阈值,MZ为针对Zygote进程预设的内存阈值。其中Browser进程、GPU进程和Zygote进程为运行指定浏览器所需执行的进程。
在具体实现时,如果在浏览器中只打开一个网页1,则在打开网页1时,由Browser进程为网页1创建一个Render1进程,针对Render1进程对应的内存预设阈值MR1,依据上述步骤201~步骤202,可以得出Render1进程对应的内存预设阈值MR1为(MT–(MB+MG+MZ)),如图5所示,指定浏览器中预设的总内存阈值可以参照图5进行划分。
示例性的,如果在浏览器中打开了两个网页:网页1和网页2,则在打开网页1时,由Browser进程为网页1创建一个Render1进程,在打开网页2时,由Browser进程为网页2创建一个Render2进程。针对Render1进程对应的内存预设阈值MR1,和Render2进程对应的内存预设阈值MR2,依据上述步骤201~步骤202,可以得出内存预设阈值MR1和内存预设阈值MR2的值相同,MR1=MR2=(MT–(MB+MG+MZ))/2,如图6所示,指定浏览器中预设的总内存阈值可以参照图6进行划分,将总内存阈值中减去三个基本进程对应的内存阈值后剩余的内存阈值等分为两份,分别分配给MR1和MR2。
示例性的,如果在浏览器中打开了i个网页:网页1~网页i,则在浏览器中,Browser进程将为网页1到网页i创建i个Render进程,分别为Render1进程~Renderi进程。针对Render1进程对应的内存预设阈值MR1到Render i进程对应的内存预设阈值MRi,依据上述步骤201~步骤202,可以得出内存预设阈值MR1~MRi的值,即MR1=MR2=…=MRi=(MT–(MB+MG+MZ))/i,如图7所示,指定浏览器中预设的总内存阈值可以参照图7进行划分,将总内存阈值中减去三个基本进程对应的内存阈值后剩余的内存阈值等分为i份,分别分配给MR1~MRi。
至此,完成图2所示流程。
通过图2所示的实施例,可以根据浏览器中打开的网页的个数,动态调节网页对应的用于网页渲染的Render进程对应的内存预设阈值MR,比如当在指定浏览器上打开N个网页时,调整已设置的每一Render进程对应的内存预设阈值MR为(MT–(MB+MG+MZ))/N,从而实现对浏览器内存更精细化的管理,避免浏览器崩溃。
下面对如何动态调整上述步骤201~202确定的Render进程对应的内存预设阈值MR进行描述。参见3,图3为本申请实施例提供的动态调整Render进程对应的内存预设阈值MR的方法流程图。作为一个实施例,图3和图2所示的流程可以应用于如上所描述的显示设备。
如图3所示,该流程可以包括以下步骤:
步骤301,当任一网页在前台被浏览时,若检测到当前被浏览的网页对应的Render进程所占用的内存大于或者等于所述Render进程对应的内存预设阈值MR。
作为一个实施例,当前被浏览的网页对应的Render进程所占用的内存可以分为两部分,一部分为Render进程实际使用的内存,另一部分为创建Render进程后为Render进程分配的预设内存缓存区MPAD,预设内存缓存区MPAD的作用是为Render进程实际使用内存增大时提供一个缓冲,避免该网页对应的Render进程由于实际使用的内存突然增大而卡死。
需要说明的是,针对一个Render进程,可以为该Render进程分配一个预设内存缓存区MPAD,如图9所示,也可以为该Render进程分配多个预设内存缓存区MPAD,如图10所示,图10中为Render进程分配了三个预设内存缓存区MPAD。具体为Render进程分配多少个预设内存缓存区MPAD,可以依据不同浏览器的设置,本申请对此不作限制。
步骤302,判断所述指定浏览器后台是否存在其他网页,若不存在,则执行步骤303,否则,执行步骤304。
步骤303,释放所述指定浏览器中处于空闲状态的网络资源。
作为一个实施例,如果指定浏览器后台中不存在其他网页,表明当前指定浏览器中只打开了一个网页,假设该网页中Render进程(记为Render1进程)实际使用的内存为MR11,且被分配了一个预设内存缓存区MPAD,则当MR11和MPAD相加后得到的值大于或者等于该Render1进程对应的内存预设阈值MR1,此时表明该Render1进程实际使用的内存MR11已经快达到内存预设阈值MR1,如图8所示,图8中从上至下分别展示了MR11和MPAD相加后小于MR1、MR11和MPAD相加后等于MR1和MR11、MPAD相加后大于MR1的示意图。
因此,可以释放本浏览器中cache(缓存)、shareMemory(共享内存)中存在的处于空闲状态的网络资源,将该处于空闲状态的网络资源调整到Render1进程对应的内存预设阈值MR1中。
进一步的,如果对上述Render1进程对应的内存预设阈值MR1进行调整后,MR11和MPAD相加后得到的值大于或者等于MR1,则说明该网页比较复杂,现在的系统环境中没有多余的内存可以给到当前的网页进行使用。因此,可以触发已设置的OOM(out of memory,内存溢出)功能,通知Browser进程关闭该Render进程,释放该Render进程占用的所有内存,并可以弹出OOM的提示消息,以提示用户该网页将由于内存溢出被关闭。
步骤304,将其他网页所对应的Render进程中占用的内存调整到所述在前台被浏览的网页的Render进程对应的内存预设阈值MR中。
作为一个实施例,如果指定浏览器后台中存在其他网页,表明当前指定浏览器中至少存在两个网页。
示例性的,假设当前指定浏览器中同时存在两个网页:网页1和网页2,网页1在浏览器后台,而网页2为当前在前台被浏览的网页,并且,网页1对应的Render进程为Render1进程,网页2对应的Render进程为Render2进程,该Render2进程实际使用的内存为MR21,且被分配了一个预设内存缓存区MPAD,则当MR21和MPAD相加后得到的值大于或者等于该Render2进程对应的内存预设阈值MR2,可以将Render1进程所占用的内存调整到MR2中。
作为一个实施例,将Render1进程所占用的内存调整到MR2之前,可以先判断Render1进程实际占用的内存是否小于Render1进程对应的内存预设阈值MR1。这里Render1进程实际占用的内存包括Render1进程实际使用的内存MR11和被分配的至少一个预设内存缓存区MPAD,并且MR1=MR2=(MT–(MB+MG+MZ))/2。
可选的,若判断出Render1进程实际占用的内存小于Render1进程对应的内存预设阈值MR1,并且Render1进程中被分配了至少m个预设内存缓存区MPAD,m大于2,则可以将Render1进程中(m-1)个MPAD调整到Render2进程对应的内存预设阈值MR2中,此时Render1进程对应的内存预设阈值MR1将减少(m-1)个MPAD。
可选的,若判断出Render1进程实际占用的内存大于或者等于Render1进程对应的内存预设阈值MR1,和/或Render1进程中只被分配了一个预设内存缓存区MPAD,则可以触发浏览器中已设置的Discard(移除)功能,释放Render1进程占用的所有内存(包括内存MR11和被分配的MPAD),同时在Browser进程中保留Render1进程的关键信息,以便可以再次快速进入Render1进程对应的网页1。在将网页1移除之后,此时浏览器中只剩下网页2,网页2的Render2进程对应的内存预设阈值MR2,该MR2=MT–(MB+MG+MZ),下一步可以依据步骤303对网页2占用的内存进行管理。
示例性的,基于上述对浏览器中存在两个网页时,动态调整网页对应的Render进程对应的内存预设阈值MR的流程,示例性的,假设浏览器中同时打开了i个网页(包括网页1~网页i),其中Render1进程对应的内存预设阈值MR1到Renderi进程对应的内存预设阈值MRi为:MR1=MR2=…=MRi=(MT–(MB+MG+MZ))/i,则可以参照上述存在两个网页时动态调整内存预设阈值MR的流程:
若当前在前台被浏览的网页为网页i,网页i对应的Render i进程占用的实际使用的内存MRi1加上MPAD大于等于Render i进程的内存的预设均衡阈值MRi,则可以依次将Render1进程~Render(i-1)进程所占用的内存调整到MR2中。
作为一个实施例,针对Render1进程~Render(i-1)进程中任一Render进程,可以先判断该Render进程(记为Render j进程,1<=j<=i-1)实际占用的内存是否小于Renderj进程对应的内存预设阈值MRj。这里Render j进程实际占用的内存包括Render j进程实际使用的内存MRj1和被分配的至少一个预设内存缓存区MPAD。
可选的,若判断出Render j进程实际占用的内存小于Render j进程对应的内存预设阈值MRj,并且Render j进程中被分配了至少m个预设内存缓存区MPAD,m大于2,则可以将Render j进程中(m-1)个MPAD调整到Render i进程对应的内存预设阈值MRi中,此时Renderj进程对应的内存预设阈值MRj将减少(m-1)个MPAD。
可选的,若判断出Render j进程实际占用的内存大于或者等于Render j进程对应的内存预设阈值MRj,和/或Render j中只被分配了一个预设内存缓存区MPAD,则可以触发浏览器中已设置的Discard(移除)功能,释放Render j进程占用的所有内存(包括内存MRj1和被分配的MPAD),同时在Browser进程中保留Render j进程的关键信息,以便可以再次快速进入Render j进程对应的网页j。在将网页j移除之后,此时浏览器中只剩下(i-1)个网页,可以重新调整这(i-1)个网页对应的内存预设阈值为(MT–(MB+MG+MZ))/(i-1)。
进一步的,若此时当前浏览的网页对应的Render进程所占用的内存仍大于或者等于该Render进程对应的新调整的内存预设阈值(MT–(MB+MG+MZ))/(i-1),可以依据上述步骤继续获取浏览器中的处于后台的其他网页对应的Render进程占用的内存进行调整。
至此,完成图3所示流程。通过图3所示流程,可以在图2中动态确定Render进程对应的内存预设阈值MR的基础上,在网页的使用过程中,对上述针对网页的Render进程确定的内存预设阈值MR再次进行动态调整,内存预设阈值MR。
需要说明的是,在上述步骤301中,若检测到当前被浏览的网页对应的Render进程所占用的内存小于所述Render进程对应的内存预设阈值MR,则不需要对该Render进程对应的内存预设阈值MR进行调整。
以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:资源调度方法、装置、设备和计算机存储介质