著录项信息
专利名称 | 一种调整内存的方法和装置 |
申请号 | CN200910087164.1 | 申请日期 | 2009-06-10 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2009-11-18 | 公开/公告号 | CN101582051 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F12/00 | IPC分类号 | G;0;6;F;1;2;/;0;0;;;G;0;6;F;9;/;5;0查看分类表>
|
申请人 | 腾讯科技(深圳)有限公司 | 申请人地址 | 广东省深圳市福田区赛格科技园2栋东403室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 腾讯科技(深圳)有限公司 | 当前权利人 | 腾讯科技(深圳)有限公司 |
发明人 | 华有为 |
代理机构 | 北京三高永信知识产权代理有限责任公司 | 代理人 | 何文彬 |
摘要
本发明公开了一种调整内存的方法和装置,属于通信计算机领域。所述方法包括:获取初始占用内存;根据所述初始占用内存,占用客户端机器内存;检测当前客户端机器的可用内存;如果所述检测的可用内存小于客户端机器的可用内存阈值,则释放所述初始占用内存的部分内存给所述客户端机器;如果所述检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存。所述装置包括:获取模块、分配模块、检测模块、释放模块和占用模块。通过定时检测客户端机器中的内存使用情况,动态的调整软件在客户端机器中占用的内存大小,合理的使用了客户端机器的内存,加快了客户端机器的运行速度,提高了用户的使用体验。
一种调整内存的方法和装置 \n技术领域\n[0001] 本发明涉及通信计算机领域,特别涉及一种调整内存的方法和装置。 背景技术\n[0002] 随着通信技术的发展,软件的运行程序越来越大,对客户端机器的内存占用也越来越大,虽然目前客户端机器的物理内存不断提高,但内存仍然是客户端机器很重要的硬件资源。 \n[0003] 机器内存作为客户端机器上的重要硬件资源,是否合理使用直接决定了用户的使用体验以及内存的使用效率,尤其对一些数据交换比较大的软件,如P2P(Peer to Peer,点对点)软件。由于P2P软件需要不断的从其他客户端机器下载数据,同时还要不断的向其他客户端机器上传数据,存在大量的数据共享,所以对机器内存的合理利用尤为重要。 [0004] 目前,对于机器内存的分配方法是按需分配,即软件需要多大的内存,就在机器内存中占用多大。 \n[0005] 发明人在实现本发明时经过分析和研究后,发现现有技术至少存在以下的缺点和不足: \n[0006] 按需分配的内存分配方法,在客户端机器中多个软件的程序同时运行,如果软件的程序运行在客户端机器中按照需要的内存占用了很大的机器内存,则机器中可用内存很小,处理速度会大大降低,使得用户的使用体验很差;如果软件的程序运行在客户端机器中按需占用机器内存空间很小时,则机器中可用内存很大,机器内存资源将会有白白浪费,降低了机器内存的使用效率。 \n发明内容\n[0007] 为了提高客户端机器内存的使用效率和用户的使用体验,本发明实施例提供了一种调整内存的方法和装置。所述技术方案如下: \n[0008] 本发明实施例提供了一种调整内存的方法,所述方法包括: \n[0009] 获取初始占用内存; \n[0010] 根据所述初始占用内存,占用客户端机器内存; \n[0011] 检测当前客户端机器的可用内存; \n[0012] 如果所述检测的可用内存小于客户端机器的可用内存阈值,则释放所述初始占用内存的部分内存给所述客户端机器; \n[0013] 如果所述检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存。 \n[0014] 其中,所述如果所述检测的可用内存小于客户端机器的可用内存阈值,则释放所述初始占用内存的部分内存给所述客户端机器,具体包括: \n[0015] 对所述可用内存阈值和所述可用内存求差,得到客户端机器中的不足可用内存; [0016] 对所述初始占用内存与最小内存求差,得到最大释放内存,所述最小内存是指运行在所述客户端机器的软件能够正常运行所需要的最小内存空间; \n[0017] 如果所述最大释放内存大于所述不足可用内存,则释放所述不足可用内存大小的内存给所述客户端机器; \n[0018] 如果所述最大释放内存小于等于所述不足可用内存,则释放所述最大释放内存大小的内存给所述客户端机器。 \n[0019] 其中,所述如果所述检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存,具体包括: \n[0020] 对所述可用内存和所述可用内存阈值求差,得到客户端机器中的剩余可用内存; [0021] 将所述剩余可用内存与当前占用内存求和,得到新占用内存; [0022] 根据所述新占用内存,占用所述客户端机器内存。 \n[0023] 其中,所述获取初始占用内存,包括: \n[0024] 获取客户端机器默认的初始占用内存;或,获取预先配置的初始占用内存。 [0025] 其中,所述检测当前客户端机器的可用内存,包括: \n[0026] 按照预设的时间间隔,定时检测所述客户端机器的可用内存,以便根据所述每次检测的结果调节所占用内存大小。 \n[0027] 本发明实施例还提供了一种调整内存的装置,所述装置包括: [0028] 获取模块,用于获取初始占用内存; \n[0029] 分配模块,用于根据所述获取模块获取的初始占用内存,占用客户端机器 内存; [0030] 检测模块,用于检测当前客户端机器的可用内存; \n[0031] 释放模块,如果所述检测模块检测的可用内存小于客户端机器的可用内存阈值,则释放所述初始占用内存的部分内存给所述客户端机器; \n[0032] 占用模块,如果所述检测模块检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存。 \n[0033] 其中,所述释放模块,具体包括: \n[0034] 第一处理单元,用于对所述可用内存阈值和所述检测模块检测的可用内存求差,得到客户端机器中的不足可用内存; \n[0035] 第二处理单元,用于对所述初始占用内存与最小内存求差,得到最大释放内存,所述最小内存是指运行在所述客户端机器的软件能够正常运行所需要的最小内存空间; [0036] 第一释放单元,用于如果所述最大释放内存大于所述不足可用内存,则释放所述不足可用内存大小的内存给所述客户端机器; \n[0037] 第二释放单元,用于如果所述最大释放内存小于等于所述不足可用内存,则释放所述最大释放内存大小的内存给所述客户端机器。 \n[0038] 其中,所述占用模块,具体包括: \n[0039] 第三处理单元,用于对所述检测模块检测的可用内存和所述可用内存阈值求差,得到客户端机器中的剩余可用内存; \n[0040] 第四处理单元,用于将所述剩余可用内存与当前占用内存求和,得到新占用内存; \n[0041] 占用单元,用于根据所述新占用内存,占用所述客户端机器内存。 [0042] 其中,所述获取模块,包括: \n[0043] 第一获取单元,用于获取客户端机器默认的初始占用内存; \n[0044] 第二获取单元,用于获取预先配置的初始占用内存。 \n[0045] 其中,所述检测模块,包括: \n[0046] 检测单元,用于按照预设的时间间隔,定时检测所述客户端机器的可用内存。 [0047] 本发明实施例提供的技术方案的有益效果是: \n[0048] 本发明实施例提供的方案,通过定时检测客户端机器中的内存使用情况,动态的调整软件在客户端机器中占用的内存大小,合理的使用了客户端机器的 [0049] 内存,加快了客户端机器的运行速度,提高了用户的使用体验。 附图说明\n[0050] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。 \n[0051] 图1是本发明实施例1提供的方法流程示意图; \n[0052] 图2是本发明实施例2提供的方法流程示意图; \n[0053] 图3是本发明实施例3提供的装置结果示意图。 \n具体实施方式\n[0054] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。 \n[0055] 实施例1 \n[0056] 为了提高客户端机器内存的使用效率和用户的使用体验,本发明实施例提供了一种调整内存的方法,参见图1,该方法包括: \n[0057] 101:获取初始占用内存; \n[0058] 102:根据初始占用内存,占用客户端机器内存; \n[0059] 103:检测当前客户端机器的可用内存; \n[0060] 104:如果检测的可用内存小于客户端机器的可用内存阈值,则释放初始占用内存的部分内存给客户端机器; \n[0061] 105:如果检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存。 \n[0062] 其中,如果检测的可用内存小于客户端机器的可用内存阈值,则释放初始占用内存的部分内存给客户端机器,具体包括: \n[0063] 对可用内存阈值和可用内存求差,得到客户端机器中的不足可用内存; [0064] 对初始占用内存与最小内存求差,得到最大释放内存; \n[0065] 如果最大释放内存大于不足可用内存,则释放不足可用内存大小的内存给 客户端机器; \n[0066] 如果最大释放内存小于等于不足可用内存,则释放最大释放内存大小的内存给客户端机器。 \n[0067] 其中,如果检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存,具体包括: \n[0068] 对可用内存和可用内存阈值求差,得到客户端机器中的剩余可用内存; [0069] 将剩余可用内存与当前占用内存求和,得到新占用内存; \n[0070] 根据新占用内存,占用客户端机器内存。 \n[0071] 其中,获取初始占用内存,包括: \n[0072] 获取客户端机器默认的初始占用内存;或,获取预先配置的初始占用内存。 [0073] 其中,检测当前客户端机器的可用内存,包括: \n[0074] 按照预设的时间间隔,定时检测客户端机器的可用内存,以便根据每次检测的结果调节所占用的内存大小。 \n[0075] 本发明实施例提供的方法,通过定时检测客户端机器中的内存使用情况,动态的调整软件在客户端机器中占用的内存大小,合理的使用了客户端机器的内存,加快了客户端机器的运行速度,提高了用户的使用体验。 \n[0076] 实施例2 \n[0077] 为了提高客户端机器内存的使用效率和用户的使用体验,本发明实施例提供了一种调整内存的方法,通过软件程序自身自适应的调整运行程序的大小,使得客户端机器内存能够合理使用,其中本发明实施例中以P2P软件为例,参见图2,具体的工作流程示意图如下: \n[0078] 201:客户端机器启动,P2P软件程序在客户端机器中启动; \n[0079] 其中,客户端机器启动后,P2P软件程序在客户端机器中启动时一般在客户端机器中同时有多个软件程序运行,共同占用客户端机器的内存; \n[0080] P2P软件在客户端机器中刚启动运行时,可以设定按最小内存占用机器内存;这里的最小内存指的是P2P软件能够正常运行所需要的最小内存空间;例如:某P2P软件程序正常运行时需要200M,最小内存为100M,表示该P2P软件在内存只有100M的情况下,就能够运行。其中,对于P2P软件最小内存的设定,根据具体情况灵活设置,本发明实施例对此不作限制。 \n[0081] 202:P2P软件获取当前该P2P软件的初始占用内存; \n[0082] 其中,P2P软件获取当前该P2P软件的初始占用内存,具体包括以下两种方式: [0083] (1)获取在P2P软件中预设的初始占用内存; \n[0084] 其中,可以在P2P软件中预先设置初始占用内存,当该P2P软件在客户端机器中运行时,P2P软件获取该初始占用内存;例如:P2P软件中预设的初始占用内存为250M,则P2P软件在客户端机器中运行时将获取该初始占用内存,并在根据该初始占用内存占用机器内存。其中,P2P软件中预设的初始占用内存可以根据实际情况灵活修改,比如当P2P软件升级或者增加新的功能时,可以适当的提高初始占用内存值的大小。 \n[0085] (2)从配置服务器中获取该P2P软件的初始占用内存; \n[0086] 其中,配置服务器预先需要对P2P软件的初始占用内存进行配置,在配置时会根据该P2P软件的大小、该P2P软件的最小内存、客户端机器内存的大小、用户对该P2P软件的使用频率以及用户近期工作的繁忙程度等各种因素进行配置,参见表1。 [0087] 表1 \n[0088] \n \n存\n内\n \n \n用\n占 \n M M\n始 M 0 0\n0 0 2\n初 8 1 1\n \n \n \n度\n程\n \n \n忙 忙 \n繁 忙 不 忙\n \n \n)\n天\n/\n次\n(\n \n \n率\n频\n \n用 5\n .\n使 5 1 0\n \n \n \n存\n内\n \n \n器 \nG G G\n机 1 1 2\n \n \n \n存\n内\n \n \n \n小 M M M\n0 0 0\n最 8 7 5\n \n \n \n小\n大\n \n \nM M M\n件 0 0 0\n0 5 2\n软 2 1 1\n \n \n \n1 2 3\n件\n软 件 件 件\n 软 软 软\nP P P P\n2 2 2 2\nP P P P\n \n \n[0089] 表1中,P2P软件1的软件大小为200M,最小内存为80M,机器内存为1G,使用频率为一天5次,说明用户经常使用该P2P软件,但是由于用户近期工作比较繁忙,占用较大的机器内存,所以配置服务器只给该P2P软件配置了80M的初始占用内存;其中,配置服务器在给软件配置初始占用内存时,要大于等于该P2P软件的最小内存,因为P2P软件的最小内存是保证该P2P软件正常工作的条件;如果配置的初始占用内存小于该P2P软件的最小内存,则该P2P软件将无法启动运行。 \n[0090] P2P软件2的软件大小为150M,最小内存为70M,机器内存为1G,使用频率为一天\n1次,说明用户比较经常使用该P2P软件,且用户近期工作不忙, 但由于机器内存为1G,机器内存中可能运行多个软件,所以配置服务器给该P2P软件配置了100M的初始占用内存。 [0091] P2P软件3的软件大小为120M,最小内存为50M,机器内存为2G,使用频率为一天\n0.5次,说明用户不经常使用该P2P软件,用户近期工作也比较繁忙,但由于机器内存为2G,有足够的可用内存运行程序,所以配置服务器给该P2P软件配置了120M的初始占用内存。 [0092] 配置服务器在给P2P软件配置初始占用内存后,存储在配置服务器中;配置服务器中保存着多个软件的初始占用内存,当软件在客户端机器中运行时,到配置服务器中去获取对应的初始占用内存。 \n[0093] 配置服务器,可以是专门用于配置初始占用内存的服务器,也可以是其他任一具有能够配置初始内存占用功能的服务器。 \n[0094] 步骤202中,P2P软件也可以不需要获取当前该P2P软件的初始占用内存,而是按照默认的初始占用内存占用机器内存,比如可以默认所有的软件在启动运行时,初始占用内存为100M;其中,设置P2P软件的默认初始占用内存的可以是客户端机器即所有在该客户端运行的软件程序启动时初始占用内存都是100M,也可以由任何其他服务器进行设置,设置时一般会考虑所运行的软件的最小内存,以保证软件的正常启动。 [0095] 203:P2P软件根据获取的初始占用内存,占用客户端机器内存运行; [0096] 其中,P2P软件根据步骤202中获取的该P2P软件的初始占用内存来占用客户端机器内存运行。 \n[0097] 如果客户端机器内存此时的可用内存太小不能满足P2P软件的最小内存,P2P软件无法正常运行,可以调用虚拟内存运行该P2P软件,在后续的过程中如果检测到客户端机器的可用内存增大,再运行该P2P软件。 \n[0098] 经过步骤201-203,完成了P2P软件的启动运行过程,P2P软件正常运行后,还需要不断检测机器内存的使用情况,以便能够动态的调整P2P软件运行程序的大小,进而合理有效的利用机器内存,具体动态调整过程参见步骤204-207。 \n[0099] 204:P2P软件运行后,定时检测当前客户端机器的可用内存; [0100] 其中,P2P软件根据获取的初始占用内存在客户端机器中占用内存运行后,按照预设的时间间隔,定时按照对当前客户端机器中可用内存的大小。其中,对于时间间隔的设定,可以根据实际情况灵活设定,本发明实施例对此不作限 制。 \n[0101] 205:P2P软件判断当前客户端机器中可用内存是否小于设定的阈值,如果是,执行206;否则,执行207。 \n[0102] 其中,对客户端机器中可用内存预先设定一个阈值;如果当前客户端机器中可用内存小于该阈值,说明当前客户端机器中可用内存不足,影响了客户端机器中各个软件的运行,需要增加可用内存;如果当前客户端机器中可用内存大于等于该阈值,说明当前客户端机器中可用内存较大,有多余的内存可以使用,可以将一部分可用内存用于运行P2P软件。其中,可用内存的阈值,根据客户端机器的实际情况灵活设定,比如说可以设定客户端机器的可用内存为30%,即为客户端机器内存大小的30%。,如果低于该值,则需要P2P软件释放一部分内存,如果高于该值,说明客户端机器的可用内存剩余,此时可以将一部分可用内存用于P2P软件运行。 \n[0103] 206:P2P软件释放部分内存给客户端机器,作为客户端机器的可用内存; [0104] 其中,P2P软件判断当前客户端机器中可用内存小于预设的阈值,获知当前客户端机器中可用内存不足,则P2P软件将释放部分正在运行的内存,以增大客户端机器中可用内存。 \n[0105] P2P软件所释放的内存后必须保证自身使用的内存大于等于最小内存,以保证P2P软件的正常运行。例如:当前P2P软件检测到当前客户端机器中可用内存为100M,而客户端机器中可用内存的阈值为200M,客户端机器中可用内存还需要100M,P2P软件当前使用的内存为150M,而最小内存为100M,则P2P软件最多只能释放50M的内存给客户端机器。如果P2P软件所能释放的内存大于客户端机器需要的可用内存时,则释放客户端机器需要的可用内存,而无需全部释放;例如:当前P2P软件检测到当前客户端机器中可用内存为100M,而客户端机器中可用内存的阈值为200M,客户端机器中可用内存还需要100M,P2P软件当前使用的内存为300M,而最小内存为100M,则P2P软件最多可以释放200M的内存给客户端机器,但是此时客户端机器只需要100M的可用内存,则P2P软件只需要释放100M即可。 \n[0106] 207:P2P软件重新配置P2P软件的新占用内存,并按照新占用内存,占用客户端机器的内存。 \n[0107] 如果判断当前客户端机器中可用内存大于等于设定的阈值,可以由配置服 务器重新配置新占用内存,P2P软件按照新占用内存,占用客户端机器的内存。 [0108] 其中,在配置新占用内存时,对当前客户端机器可用内存与可用内存设定的阈值求差,得到可配置的剩余内存;对可配置的剩余内存与P2P软件当前占用内存求和,得到新占用内存;P2P软件按照新占用内存,占用客户端机器的内存。 \n[0109] 例如:当前客户端机器可用内存为300M,客户端机器可用内存设定的阈值为\n200M,则可配置的剩余内存为100M;而P2P软件当前正在占用的内存为150M,则新占用内存为350M;P2P软件以后将按照350M,占用客户端机器的内存。 \n[0110] 当步骤207执行完后,再过一个时间间隔,继续执行步骤204-207,通过反复执行步骤204-207,实现动态的调整软件在客户端机器中占用的内存大小的目的,合理的使用了客户端机器的内存。 \n[0111] 上述步骤204-207,通过一次检测机器内存的使用情况,实现了能够动态的调整P2P软件运行程序的大小,进而合理有效的利用机器内存。 \n[0112] 本发明实施例中以P2P软件为例,本发明实施例提供的方法还适用于其他任何在客户端机器中运行的软件,实现动态的调整P2P软件在客户端机器中运行的程序大小,实现了对客户端机器内存的合理利用,提高了使用效率。 \n[0113] 本发明实施例中提供的方法特别适用于P2P软件,由于P2P软件有很多共享数据,需要不断的下载其他客户端的数据,同时还需要不断地上传自身的数据给其他客户端,如果合理调整内存,可以使得客户端机器将在内存中缓存的下载数据,同时上传给其他需要该数据的客户端;或者每次从硬盘读取一定数据,同时上传给多个其他需要该数据的客户端,从而减少硬盘的读取次数,提高运行速度。 \n[0114] 本发明实施例提供的方法,通过定时检测客户端机器中的内存使用情况,动态的调整软件在客户端机器中占用的内存大小,合理的使用了客户端机器的内存,加快了客户端机器的运行速度,提高了用户的使用体验。 \n[0115] 实施例3 \n[0116] 本发明实施例还提供了一种调整内存的装置,参见图3,该装置包括: [0117] 获取模块301,用于获取初始占用内存; \n[0118] 分配模块302,用于根据获取模块301获取的初始占用内存,占用客户端机器内存; \n[0119] 检测模块303,用于检测当前客户端机器的可用内存; \n[0120] 释放模块304,如果检测模块303检测的可用内存小于客户端机器的可用内存阈值,则释放初始占用内存的部分内存给客户端机器; \n[0121] 占用模块305,如果检测模块303检测的可用内存大于等于客户端机器的可用内存阈值,则占用客户端机器中的剩余可用内存。 \n[0122] 其中,释放模块304,具体包括: \n[0123] 第一处理单元,用于对可用内存阈值和检测模块303检测的可用内存求差,得到客户端机器中的不足可用内存; \n[0124] 第二处理单元,用于对初始占用内存与最小内存求差,得到最大释放内存; [0125] 第一释放单元,用于如果最大释放内存大于不足可用内存,则释放不足可用内存大小的内存给客户端机器; \n[0126] 第二释放单元,用于如果最大释放内存小于等于不足可用内存,则释放最大释放内存大小的内存给客户端机器。 \n[0127] 其中,占用模块305,具体包括: \n[0128] 第三处理单元,用于对检测模块303检测的可用内存和可用内存阈值求差,得到客户端机器中的剩余可用内存; \n[0129] 第四处理单元,用于将剩余可用内存与当前占用内存求和,得到新占用内存; [0130] 占用单元,用于根据新占用内存,占用客户端机器内存。 \n[0131] 其中,获取模块,包括: \n[0132] 第一获取单元,用于获取客户端机器默认的初始占用内存; \n[0133] 第二获取单元,用于获取预先配置的初始占用内存。 \n[0134] 其中,检测模块303,包括: \n[0135] 检测单元,用于按照预设的时间间隔,定时检测客户端机器的可用内存。 [0136] 本发明实施例提供的装置,通过检测模块303定时检测客户端机器中的内存使用情况,释放模块304和占用模块305动态的调整软件在客户端机器中占用的内存大小,合理的使用了客户端机器的内存,加快了客户端机器的运行速度,提高了用户的使用体验。 [0137] 本发明实施例中的“接收”一词可以理解为主动从其他模块获取也可以是接收其他模块发送来的信息。 \n[0138] 本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。 \n[0139] 本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。 \n[0140] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。 [0141] 本发明实施例中的部分步骤,可以利用软件实现,相应的软件程序可以存储在可读取的存储介质中,如光盘或硬盘等。 \n[0142] 以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2011-01-19
- 2010-01-13
- 2009-11-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |