CN111459410B - 内存空间分配方法、装置、电子设备及存储介质 - Google Patents

内存空间分配方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111459410B
CN111459410B CN202010220587.2A CN202010220587A CN111459410B CN 111459410 B CN111459410 B CN 111459410B CN 202010220587 A CN202010220587 A CN 202010220587A CN 111459410 B CN111459410 B CN 111459410B
Authority
CN
China
Prior art keywords
capacity
memory space
standard
capacities
occurrence
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.)
Active
Application number
CN202010220587.2A
Other languages
English (en)
Other versions
CN111459410A (zh
Inventor
黄栎桥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Sankuai Online Technology Co Ltd
Original Assignee
Beijing Sankuai Online Technology Co Ltd
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 Beijing Sankuai Online Technology Co Ltd filed Critical Beijing Sankuai Online Technology Co Ltd
Priority to CN202010220587.2A priority Critical patent/CN111459410B/zh
Publication of CN111459410A publication Critical patent/CN111459410A/zh
Application granted granted Critical
Publication of CN111459410B publication Critical patent/CN111459410B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请公开了一种内存空间分配方法、装置、电子设备及存储介质,属于计算机技术领域。方法包括:获取多条历史日志的容量和多个标准容量;根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数;根据每个标准容量的出现次数进行统计处理,得到参考容量;根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间;将第二内存空间分配给目标日志。由于该参考容量是以历史日志为依据确定的,因此该参考容量的适配性高,降低了调整处理时的调整幅度,通过调整处理还可以得到更为匹配的第二内存空间,提高了分配给目标日志的内存空间的准确度,还降低了系统的性能损耗,提升了系统的运行效率,提高了内存空间的利用率。

Description

内存空间分配方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,特别涉及一种内存空间分配方法、装置、电子设备及存储介质。
背景技术
随着计算机技术的发展,信息量呈爆炸式增长,事件或应用运行状态等信息通常采用日志的形式进行记录,并且通过为日志分配内存空间,将日志存储在该内存空间中。
相关技术中,通常会设置固定容量,将该固定容量的内存空间分配给日志。对于容量大于该固定容量的日志,需要对分配的内存空间进行扩容处理,会给系统的处理性能带来不利影响,导致系统运行效率低下。对于容量小于该固定容量的日志,则会造成内存空间的浪费,使得内存空间的利用率低下。
发明内容
本申请实施例提供了一种内存空间分配方法、装置、电子设备及存储介质,能够提高分配给日志的内存空间的准确度,降低系统的性能损耗,提高系统的运行效率。该技术方案如下:
一方面,提供了一种内存空间分配方法,该方法包括:
获取多条历史日志的容量和多个标准容量,所述多个标准容量均为单位容量的整数倍,不同标准容量相对于所述单位容量的倍数不同;
根据所述多条历史日志的容量,获取所述多个标准容量中每个标准容量的出现次数;
根据所述每个标准容量的出现次数进行统计处理,得到参考容量;
根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,所述第一内存空间的容量为所述单位容量的整数倍,所述第二内存空间的容量不小于所述参考容量且为所述单位容量的整数倍;
将所述第二内存空间分配给目标日志。
在一种可能实现方式中,所述根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:
如果所述第一内存空间的容量小于所述参考容量,则对所述第一内存空间进行扩容处理,得到所述第二内存空间,以使所述第二内存空间的容量不小于所述参考容量。
在另一种可能实现方式中,所述根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:
如果所述第一内存空间的容量大于所述参考容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量。
在另一种可能实现方式中,所述如果所述第一内存空间的容量大于所述参考容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量,包括:
如果所述第一内存空间的容量与所述参考容量的差值不小于所述单位容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量。
在另一种可能实现方式中,所述根据所述多条历史日志的容量,获取所述多个标准容量中每个标准容量的出现次数,包括:
获取所述多条历史日志中每条历史日志所分配的内存空间的容量;
根据所述每条历史日志所分配的内存空间的容量,获取所述多个标准容量中每个标准容量的出现次数。
在另一种可能实现方式中,所述将所述第二内存空间分配给目标日志之后,所述方法还包括:
将所述第二内存空间的容量的出现次数加1。
在另一种可能实现方式中,所述将所述第二内存空间的容量的出现次数加1,包括:
在全局计数器中查询所述第二内存空间的容量的第一出现次数,所述全局计数器用于存储所述多个标准容量及所述每个标准容量的出现次数;
将所述第一出现次数加1,得到第二出现次数;
在所述全局计数器中,将所述第二出现次数替换所述第一出现次数。
在另一种可能实现方式中,所述每个标准容量具有对应的线程,所述将所述第二内存空间的容量的出现次数加1,包括:
通过所述第二内存空间的容量对应的目标线程,从所述目标线程关联的局部计数器中获取所述第二内存空间的容量的第三出现次数;
将所述第三出现次数加1,得到第四出现次数;
在所述局部计数器中,将所述第四出现次数替换所述第三出现次数。
在另一种可能实现方式中,所述在所述局部计数器中,将所述第四出现次数替换所述第三出现次数之后,所述方法还包括:
如果所述第四出现次数等于预设阈值,则将全局计数器中所述第二内存空间的容量的出现次数增加所述第四出现次数,将所述局部计数器中的所述第四出现次数更改为0,所述全局计数器用于存储所述多个标准容量及所述每个标准容量的出现次数。
一方面,提供了一种内存空间分配装置,该装置包括:
容量获取模块,用于获取多条历史日志的容量和多个标准容量,所述多个标准容量均为单位容量的整数倍,不同标准容量相对于所述单位容量的倍数不同;
次数获取模块,用于根据所述多条历史日志的容量,获取所述多个标准容量中每个标准容量的出现次数;
统计模块,用于根据所述每个标准容量的出现次数进行统计处理,得到参考容量;
调整模块,用于根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,所述第一内存空间的容量为所述单位容量的整数倍,所述第二内存空间的容量不小于所述参考容量且为所述单位容量的整数倍;
分配模块,用于将所述第二内存空间分配给目标日志。
在一种可能实现方式中,所述调整模块,包括:
扩容单元,用于如果所述第一内存空间的容量小于所述参考容量,则对所述第一内存空间进行扩容处理,得到所述第二内存空间,以使所述第二内存空间的容量不小于所述参考容量。
在另一种可能实现方式中,所述调整模块,包括:
裁剪单元,用于如果所述第一内存空间的容量大于所述参考容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量。
在另一种可能实现方式中,所述裁剪单元,还用于如果所述第一内存空间的容量与所述参考容量的差值不小于所述单位容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量。
在另一种可能实现方式中,所述次数获取模块,包括:
容量获取单元,用于获取所述多条历史日志中每条历史日志所分配的内存空间的容量;
次数获取单元,用于根据所述每条历史日志所分配的内存空间的容量,获取所述多个标准容量中每个标准容量的出现次数。
在另一种可能实现方式中,所述装置还包括:
次数增加模块,用于将所述第二内存空间的容量的出现次数加1。
在另一种可能实现方式中,所述次数增加模块,包括:
查询单元,用于在全局计数器中查询所述第二内存空间的容量的第一出现次数,所述全局计数器用于存储所述多个标准容量及所述每个标准容量的出现次数;
次数增加单元,用于将所述第一出现次数加1,得到第二出现次数;
替换单元,用于在所述全局计数器中,将所述第二出现次数替换所述第一出现次数。
在另一种可能实现方式中,所述每个标准容量具有对应的线程,所述次数增加模块,包括:
次数获取单元,用于通过所述第二内存空间的容量对应的目标线程,从所述目标线程关联的局部计数器中获取所述第二内存空间的容量的第三出现次数;
次数增加单元,用于将所述第三出现次数加1,得到第四出现次数;
替换单元,用于在所述局部计数器中,将所述第四出现次数替换所述第三出现次数。
在另一种可能实现方式中,所述装置还包括:
次数调整模块,用于如果所述第四出现次数等于预设阈值,则将全局计数器中所述第二内存空间的容量的出现次数增加所述第四出现次数,将所述局部计数器中的所述第四出现次数更改为0,所述全局计数器用于存储所述多个标准容量及所述每个标准容量的出现次数。
一方面,提供了一种电子设备,该电子设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条指令,该至少一条指令由该一个或多个处理器加载并执行以实现如上述任一种可能实现方式的内存空间分配方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令,该至少一条指令由处理器加载并执行以实现如上述任一种可能实现方式的内存空间分配方法所执行的操作。
本申请实施例提供的技术方案带来的有益效果至少包括:
本申请实施例提供的内存空间分配方法、装置、电子设备及存储介质,获取多条历史日志的容量和多个标准容量,根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数,根据每个标准容量的出现次数进行统计处理,得到参考容量,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,将第二内存空间分配给目标日志。由于该参考容量是以历史日志为依据确定的,因此该参考容量的适配性高,降低了根据参考容量对第一内存空间进行调整处理时的调整幅度,通过调整处理,还可以得到更为匹配的第二内存空间,将该第二内存空间分配给目标日志,提高了分配给目标日志的内存空间的准确度,还降低了系统的性能损耗,提升了系统的运行效率。
并且,由于参考容量的适配性高,若参考容量大于第一内存空间的容量,则基于参考容量对第一内存空间进行扩容处理时,可以有效降低扩容处理的次数。若参考容量小于第一内存空间的容量,则基于参考容量对第一内存空间进行裁剪处理时,节省内存空间,提高内存空间的利用率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存空间分配方法的流程图;
图2是本申请实施例提供的另一种内存空间分配方法的流程图;
图3是本申请实施例提供的一种多线程关联的局部计数器的结构示意图;
图4是本申请实施例提供的一种出现次数叠加方法的流程图;
图5是本申请实施例提供的另一种出现次数叠加方法的流程图;
图6是本申请实施例提供的一种目标日志存储方法的流程图;
图7是本申请实施例提供的另一种目标日志存储方法的流程图;
图8是本申请实施例提供的一种内存空间分配装置的结构示意图;
图9是本申请实施例提供的另一种内存空间分配装置的结构示意图;
图10是本申请实施例提供的终端的结构示意图;
图11是本申请实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种内存空间分配方法的流程图,应用于电子设备中,参见图1,该实施例包括:
在步骤101中,电子设备获取多条历史日志的容量和多个标准容量,多个标准容量均为单位容量的整数倍,不同标准容量相对于单位容量的倍数不同。
在步骤102中,电子设备根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数。
在步骤103中,电子设备根据每个标准容量的出现次数进行统计处理,得到参考容量。
在步骤104中,电子设备根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,第一内存空间的容量为单位容量的整数倍,第二内存空间的容量不小于参考容量且为单位容量的整数倍。
在步骤105中,电子设备将第二内存空间分配给目标日志。
本申请实施例提供的内存空间分配方法,电子设备获取多条历史日志的容量和多个标准容量,根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数,根据每个标准容量的出现次数进行统计处理,得到参考容量,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,将第二内存空间分配给目标日志。由于该参考容量是以历史日志为依据确定的,因此该参考容量的适配性高,降低了根据参考容量对第一内存空间进行调整处理时的调整幅度,通过调整处理,还可以得到更为匹配的第二内存空间,将该第二内存空间分配给目标日志,提高了分配给目标日志的内存空间的准确度,还降低了系统的性能损耗,提升了系统的运行效率。
在一种可能实现方式中,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:
如果第一内存空间的容量小于参考容量,则对第一内存空间进行扩容处理,得到第二内存空间,以使第二内存空间的容量不小于参考容量。
在另一种可能实现方式中,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:
如果第一内存空间的容量大于参考容量,则对第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量。
在另一种可能实现方式中,如果第一内存空间的容量大于参考容量,则对第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量,包括:
如果第一内存空间的容量与参考容量的差值不小于单位容量,则对第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量。
在另一种可能实现方式中,根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数,包括:
获取多条历史日志中每条历史日志所分配的内存空间的容量;
根据每条历史日志所分配的内存空间的容量,获取多个标准容量中每个标准容量的出现次数。
在另一种可能实现方式中,将第二内存空间分配给目标日志之后,方法还包括:
将第二内存空间的容量的出现次数加1。
在另一种可能实现方式中,将第二内存空间的容量的出现次数加1,包括:
在全局计数器中查询第二内存空间的容量的第一出现次数,全局计数器用于存储多个标准容量及每个标准容量的出现次数;
将第一出现次数加1,得到第二出现次数;
在全局计数器中,将第二出现次数替换第一出现次数。
在另一种可能实现方式中,每个标准容量具有对应的线程,将第二内存空间的容量的出现次数加1,包括:
通过第二内存空间的容量对应的目标线程,从目标线程关联的局部计数器中获取第二内存空间的容量的第三出现次数;
将第三出现次数加1,得到第四出现次数;
在局部计数器中,将第四出现次数替换第三出现次数。
在另一种可能实现方式中,在局部计数器中,将第四出现次数替换第三出现次数之后,方法还包括:
如果第四出现次数等于预设阈值,则将全局计数器中第二内存空间的容量的出现次数增加第四出现次数,将局部计数器中的第四出现次数更改为0,全局计数器用于存储多个标准容量及每个标准容量的出现次数。
图2是本申请实施例提供的一种内存空间分配方法的流程图,参见图2,该实施例包括:
201、获取多条历史日志的容量和多个标准容量。
事件的描述信息、用于表示应用的运行状态的信息,以及其他类型的信息均可以采用日志的形式进行记录,后续可以将记录的日志进行存储,还可以根据存储的日志进行信息查询。电子设备为了便于日志的存储,可以为日志分配内存空间,后续即可将日志存储在该内存空间中。
例如,电子设备获取到任一日志后,首先对该日志中的字符串进行格式化处理、编码处理和解码处理,然后将处理后的日志写入到电子设备的磁盘中,存储下来,以便后续查看。
本申请实施例中的电子设备可以是终端,也可以是服务器。终端可以为手机、个人电脑、平板电脑等多种类型的设备。服务器可以是一台服务器,或者由若干台服务器组成的服务器集群,或者是一个云计算服务器中心,本申请实施例对此不做具体限定。
本申请实施例以目标日志为例,对电子设备为目标日志分配内存空间的过程进行说明。
由于目标日志的大小不同,所需的内存空间的容量也不同,电子设备可以综合考虑历史日志的存储情况,以多条历史日志的容量为依据,采用的信息更为全面。后续过程中,基于多条历史日志的容量确定的、为目标日志分配的内存空间也更为准确。为此,电子设备首先获取了多条历史日志的容量和多个标准容量,后续可以根据该多条历史日志的容量获取每个标准容量的出现次数。其中,多个标准容量均为单位容量的整数倍,不同标准容量相对于单位容量的倍数不同。
(1)获取多条历史日志的容量的过程:
电子设备可以为终端,电子设备获取多条历史日志的容量的方式可以为,终端从本地获取已存储的多条历史日志的容量,也可以为终端从其他设备中获取多条历史日志的容量,该其他设备可以为其他终端或服务器。
其中,服务器中历史日志的容量是一个或多个终端上传的。终端向服务器上传日志的容量时,可以实时发送,也可以每隔第一预设时长发送一次,可以主动在确定日志的容量后发送,也可以是在接收到服务器发送的获取请求时发送,在此不做具体限定。
终端从本地获取历史日志的容量的过程包括:当终端接收到为目标日志分配内存空间的指令时,调用本地已存储的多条历史日志的容量。终端从其他设备中获取历史日志的容量的过程包括:当终端接收到为目标日志分配内存空间的指令时,向其他设备发送携带终端标识的容量获取请求,其他设备获取多条历史日志的容量后,向该终端标识对应的终端发送该多条历史日志的容量,该终端接收其他终端发送的该多条历史日志的容量即可。
其中,终端标识可以为唯一确定该终端的标识,该终端标识可以为终端的序列号、出厂编号、用户账号等。本申请实施例对终端标识的具体形式不做限定。
电子设备可以获取目标日志之前的所有历史日志的容量,也可以为了减小计算量而仅获取目标日志之前的部分历史日志的容量。
在一种可能实现的方式中,电子设备在进行数据存储时,不仅存储了历史日志以及该历史日志的容量,还存储了该历史日志的存储时刻,在获取历史日志的容量时,电子设备直接获取存储时刻位于当前时刻之前的第二预设时长内的历史日志的容量。例如,电子设备获取当前时刻之前的最近一个月之内存储的多条历史日志的容量。
在另一种可能实现方式中,电子设备获取目标日志之前的预设数量的历史日志的容量。例如,电子设备获取目标日志之前的最近5000条历史日志的容量。
(2)获取多个标准容量的过程:
电子设备可以预先获取单位容量,通过将该单位容量与多个正整数相乘,可以得到多个标准容量,每个标准容量均为该单位容量的整数倍,且不同的标准容量相对于该单位容量的倍数不同。
电子设备为日志分配内存空间时,可以按照标准容量进行分配,也即是电子设备为日志分配的内存空间的容量均为标准容量,因此,该多条历史日志的内存空间的容量也均为标准容量。
202、根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数。
在获取到多条历史日志的容量以及多个标准容量后,电子设备根据该多条历史日志的容量,可以得到多个标准容量中给每个标准容量的出现次数,后续可以根据每个标准容量的出现次数,确定参考容量。
因此,电子设备对该多条历史日志的容量进行统计处理,对于每个标准容量,每当有一条历史日志的容量与该标准容量相匹配时,将该标准容量的出现次数加1,根据该多条历史日志的容量,获取每个标准容量的出现次数。
历史日志的容量可以为向历史日志分配的内存空间的容量,也可以为历史日志占用的内存空间的容量,也即是历史日志在所分配的内存空间中实际占用的容量,或者历史日志的容量还可以为其他方式确定的容量,本申请实施例对此不作具体限定。
根据历史日志的容量的类型不同,获取每个标准容量的出现次数的过程至少包括以下情况:
(1)历史日志的容量为历史日志占用的内存空间的容量:
在一种可能实现方式中,根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数,包括:电子设备获取该多条历史日志中每条历史日志占用的内存空间的容量,根据该多条历史日志中每条历史日志各自占用的内存空间的容量进行统计处理,得到多个标准容量中每个标准容量的出现次数。
在为任一日志分配了内存空间后,该日志可以存储在该内存空间中,然而,日志占用的内存空间的容量可能小于分配给日志的内存空间的容量,因此,可以确定该日志占用的内存空间的容量,即为该日志实际所需的容量。
其中,该日志占用的内存空间的容量可以根据该内存空间的使用情况确定,该使用情况可以包括内存空间的使用率、占用比例、空闲内存空间的比例或其他,在此不再赘述。
因此,关于获取每条历史日志占用的内存空间的容量的过程,在一种可能实现方式中,电子设备获取为该每条历史日志分配的内存空间的容量,根据该内存空间的使用情况,确定对应的历史日志占用的内存空间的容量。
例如,为历史日志A分配的内存空间1的容量为1024kb,该内存空间1的使用率为50%,则历史日志A占用的内存空间的容量即为512kb。
(2)历史日志的容量为向历史日志分配的内存空间的容量:
在另一种可能实现方式中,根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数,包括:电子设备获取该多条历史日志中每条历史日志所分配的内存空间的容量,根据该多条历史日志中每条历史日志所分配的内存空间的容量进行统计处理,得到多个标准容量中每个标准容量的出现次数。
例如,为历史日志A分配的内存空间1的容量为1024kb,则获取到的该历史日志A的容量也是内存空间1的容量1024kb。
在一种可能实现方式中,为了减小计算量,电子设备可以预先设置单位容量,为历史日志分配的内存空间的容量,也是根据该单位容量的整数倍确定的,因此历史日志的容量是历史日志所分配的内存空间的容量,则历史日志的容量为单位容量的整数倍。
203、根据每个标准容量的出现次数进行统计处理,得到参考容量。
获取到多个标准容量中每个标准容量的出现次数后,通过对每个标准容量的出现次数进行统计处理,得到参考容量,该参考容量可以认为是分配给目标日志的内存空间的容量。
其中,该参考容量可以为出现次数最多的标准容量,也可以为按照从大到小的顺序排列后,位于该排列顺序的前预设数量个标准容量中的任一个,还可以为通过其他统计处理方式得到的容量,本申请实施例对此不作具体限定。
在一种可能实现方式中,为了向目标日志分配适用的内存空间,可以选择一个大于大部分历史日志容量的标准容量,作为参考容量。为此,电子设备预先设置了第一预设比例,根据该多个标准容量的出现次数进行统计处理,得到参考容量的过程,包括:电子设备将该多个标准容量按照出现次数由大到小的顺序进行排序,按照该多个标准容量的排列顺序,从该多个标准容量中选取第一预设比例的至少一个标准容量,获取该第一预设比例的至少一个标准容量中最大的标准容量,将该标准容量确定为参考容量。
例如,获取了容量从小到大的4个标准容量:标准容量1、标准容量2、标准容量3和标准容量4,这4个标准容量的出现次数为20次、40次、10次和30次,第一预设比例为80%。按照出现次数从大到小的顺序进行排列后,该4个标准容量的排列顺序为:标准容量2、标准容量4、标准容量1和标准容量3。按照排列顺序获取前80%的3个标准容量,标准容量4为前80%中最大的标准容量,将标准容量4确定为参考容量。
在另一种可能实现方式中,根据该多个标准容量的出现次数进行统计处理,得到参考容量的过程,包括:电子设备获取多个标准容量的出现次数的平均值,将出现次数大于该平均值的任一标准容量,确定为参考容量。
在另一种可能实现方式中,根据该多个标准容量的出现次数进行统计处理,得到参考容量的过程,包括:电子设备根据获取到的多个标准容量的出现次数,对该多个标准容量进行加权平均处理,得到加权平均值,将该多个标准容量中大于该加权平均值的任一标准容量,确定为参考容量。
在另一种可能实现方式中,电子设备还可以直接对已获取的多条历史日志的容量进行统计处理,得到参考容量。对该多条历史日志的容量进行统计处理,得到参考容量的过程,至少包括以下情况:
(1)按照排列顺序确定参考容量的方式:
在一种可能实现方式中,为了向目标日志分配适用的内存空间,可以选择一个大于大部分历史日志容量的容量,作为参考容量。为此,电子设备预先设置了第二预设比例,根据该多条历史日志的容量进行统计处理,得到参考容量的过程,包括:电子设备获取该多条历史日志以及每条历史日志的容量,将该多条历史日志按照容量从小到大的顺序进行排序,按照该多条历史日志的排列顺序,从该多条历史日志中选取第二预设比例的至少一条历史日志,获取该第二预设比例的至少一条历史日志中的最后一条历史日志的容量,将该最后一条历史日志的容量确定为参考容量。
例如,获取了历史日志1、历史日志2、历史日志3、历史日志4和历史日志5这5条历史日志,这5条历史日志的容量分别为40kb、100kb、80kb、60kb和80kb,第二预设比例为80%。按照容量从小到大的顺序进行排列后,该5条历史日志的排列顺序为:历史日志1、历史日志4、历史日志2、历史日志3和历史日志5。按照排列顺序获取前80%的4条历史日志,历史日志3为前80%的最后一条日志,将历史日志3的容量80kb确定为参考容量。
(2)根据平均值确定参考容量的方式:
在另一种可能实现方式中,根据该多条历史日志的容量进行统计处理,得到参考容量,包括:电子设备获取多个标准容量,根据获取到的该多条历史日志的容量,获取该多条历史日志的容量的平均值,将该多个标准容量中大于该平均值的任一标准容量,确定为参考容量。
例如,获取到的多个标准容量分别为1024kb、2048kb、4096kb和8192kb,根据获取到的多条历史日志的容量计算得到的平均值为2983kb,则可以将4096kb和8192kb中的任一个确定为参考容量。
在该平均值小于多个标准容量的情况下,如果选择一个较大的标准容量确定为参考容量,则会造成内存空间的浪费,因此,为了节约内存空间,还可以将该多个标准容量中大于该平均值、且与该平均值之间的差值最小的标准容量,确定为参考容量。
204、根据该参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间。
为了向目标日志分配适用的内存空间,电子设备首先获取了待分配的第一内存空间,该第一内存空间的容量为单位容量的整数倍。通过步骤203获取到的参考容量是根据多条历史日志的容量确定的,具有普遍性,可以认为参考容量能够体现目标日志所需的内存空间的容量,根据该参考容量确定分配给目标日志的内存空间的容量可以提高准确度。因此,电子设备根据该参考容量对该第一内存空间进行调整处理,得到第二内存空间,该第二内存空间的容量不小于参考容量且为单位容量的整数倍。
如果第一内存空间的容量过小,则为了使第一内存空间更适合目标日志,需要对该第一内存空间进行扩容处理,如果第一内存空间的容量过大,则为了避免内存空间的浪费,需要对该第一内存空间进行裁剪处理。通过对第一内存空间进行扩容处理或裁剪处理,可以使处理后的第一内存空间更适用目标日志,后续将处理后的第一内存空间分配给目标日志,可以提高目标日志的内存空间的准确度。
(1)扩容处理的情况:
在一种可能实现方式中,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:如果第一内存空间的容量小于参考容量,则电子设备对该第一内存空间进行扩容处理,得到第二内存空间,以使第二内存空间的容量不小于参考容量。
关于对第一内存空间进行扩容处理的过程,在一种可能实现方式中,电子设备以单位容量为单位,在第一内存空间的容量的基础上,每增加一个单位容量的内存空间,则表示对该第一内存空间进行了一次扩容处理,第二内存空间的容量与第一内存空间的容量之间的差值相对于单位容量的倍数,即为对该第一内存空间进行扩容处理的次数。
在另一种可能实现方式中,电子设备以第一内存空间的容量为基础,每将该第一内存空间的容量扩大一倍,则表示对该第一内存空间进行了一次扩容处理,第二内存空间的容量与第一内存空间的容量之间的比值,即为对该第一内存空间进行扩容处理的次数。
在另一种可能实现方式中,电子设备还可以第一内存空间的容量为基础,根据其他方式进行扩容处理,本申请实施例对此不作具体限定。
(2)裁剪处理的情况:
在一种可能实现方式中,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:如果第一内存空间的容量大于参考容量,则电子设备对该第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量,且不小于参考容量。
关于对第一内存空间进行裁剪处理的过程,在一种可能实现方式中,电子设备以单位容量为单位,在第一内存空间的容量的基础上,每去除一个单位容量的内存空间,则表示对该第一内存空间进行了一次裁剪处理,第一内存空间的容量与第二内存空间的容量之间的差值相对于单位容量的倍数,即为对该第一内存空间进行裁剪处理的次数。
在另一种可能实现方式中,电子设备以第一内存空间的容量为基础,每将该第一内存空间的容量缩小一倍,则表示对该第一内存空间进行了一次裁剪处理,第一内存空间的容量与第二内存空间的容量之间的比值,即为对该第一内存空间进行裁剪处理的次数。
在另一可能实现方式中,电子设备还可以对第一内存空间进行精细的裁剪处理,以使裁剪处理后得到的第二内存空间的容量与参考容量相等,此时可以有效避免内存空间的浪费。
在另一种可能实现方式中,电子设备还可以第一内存空间为基础,根据其他方式进行裁剪处理,本申请实施例对此不作具体限定。
在以单位容量为单位对第一内存空间进行裁剪处理的情况下,如果参考容量是根据历史日志实际占用的内存空间的容量确定的,可能会存在该参考容量不是单位容量的整数倍的情况。那么,“如果第一内存空间的容量大于参考容量,则对第一内存空间裁剪正整数个单位容量”的裁剪方式,可能会造成裁剪后的第一内存空间的容量小于参考容量,影响目标日志在存储时的完整性。
因此,在一种可能实现方式中,如果第一内存空间的容量大于参考容量,则对第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量,包括:如果第一内存空间的容量大于参考容量,且第一内存空间的容量与参考容量之间的差值不小于单位容量,则电子设备对该第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量。如果第一内存空间的容量与参考容量之间的差值小于单位容量,则不对第一内存空间进行调整处理。
如果第一内存空间的容量与参考容量之间的差值不小于两个单位容量,则通过不同的裁剪处理方式,可以得到不同容量的第二内存空间。为了进一步提升第二内存空间与参考容量之间的匹配程度,在一种可能实现方式中,电子设备对第一内存空间进行裁剪处理,得到第二内存空间,以使该第二内存空间的容量与参考容量之间的差值小于单位容量。
例如,参考容量为1020,第一内存空间的容量为4096,单位容量为1024,则按照单位容量对第一内存空间进行裁剪处理后,得到第二内存空间的容量为1024。
另外,如果第一内存空间的容量小于参考容量,则可能会导致分配给目标日志的内存空间不足的情况,此时需要对第一内存空间进行扩容处理。而如果第一内存空间的容量大于参考容量,即使不对第一内存空间进行裁剪处理,也可以不会影响目标日志的存储。因此,在另一种可能实现方式中,当第一内存空间的容量大于参考容量时,电子设备无需对该第一内存空间进行任何处理,直接将该第一内存空间分配给目标日志。
205、将该第二内存空间分配给目标日志。
通过对第一内存空间进行调整处理得到第二内存空间后,电子设备将该第二内存空间分配给目标日志。后续,电子设备可以将目标日志存储在该第二内存空间中。
206、将该第二内存空间的容量的出现次数加1。
将第二内存空间分配给目标日志后,电子设备获取第二内存空间的容量的出现次数,将该出现次数加1,表示分配的内存空间中,容量与第二内存空间的容量相等的内存空间又分配了一次。
在一种可能实现方式中,电子设备包括全局计数器,该全局计数器用于存储多个标准容量及每个标准容量对应的出现次数。当电子设备将第二内存空间分配给目标日志后,在该全局计数器中查询第二内存空间的容量对应的出现次数,该出现次数为第一出现次数,电子设备将该第一出现次数加1,得到第二出现次数,该第二出现次数表示将第二内存空间分配给目标日志后,第二内存空间的容量的出现次数。然后,电子设备在该全局计数器中,将第二出现次数替换第一出现次数,表示此时第二内存空间的容量的出现次数为第二出现次数。
在另一种可能实现方式中,电子设备具有多个局部计数器,每个计数器具有相互关联的线程,每个局部计数器中存储对应标准容量的出现次数。多个标准容量中的每个标准容量均具有对应的线程,则将第二内存空间的容量的出现次数加1的过程,包括:电子设备通过第二内存空间的容量对应的目标线程,从该目标线程关联的局部计数器中获取第二内存空间的容量的第三出现次数,将该第三出现次数加1,得到第四出现次数,该第四出现次数表示当前通过该局部计数器累加的该第二内存空间的容量的出现次数。然后,电子设备在该局部计数器中,将第四出现次数替换第三出现次数,表示此时第二内存空间的容量的出现次数为第四出现次数。
在另一种可能实现方式中,电子设备同时具有局部计数器和全局计数器,该全局计数器与所有的局部计数器连接,局部计数器的存在分担了全局计数器的运行压力和累加效率。通过设置局部计数器,可以使多个次数累加进程同时进行,提高了系统的运行效率。
多个局部计数器可以同时进行数据累加,为了能够获取到准确的第二内存空间的容量的出现次数,局部计数器可以通过与全局计数器之间的连接通道,将当前存储的出现次数发送至全局计数器,在全局计数器中第二内存空间的容量的出现次数上叠加局部计数器累加的出现次数。
然而,如果局部计数器中的出现次数每加1,全局计数器中对应容量的出现次数都要加1的话,则在该容量的出现次数较多时,会导致局部计数器与全局计数器之间的连接通道被长期占用,并且由于发送操作过多,还会导致系统运行效率低下,提高系统的损耗和在系统中占用的资源。
为此,在一种可能实现方式中,电子设备预先设置了预设阈值,仅在局部计数器中累加的出现次数等于该预设阈值时,才向全局计数器发送该出现次数。并且在将局部计数器中的出现次数叠加至全局计数器中对应容量的出现次数后,为了避免出现次数重复计算,将该局部计数器中的出现次数清零,避免影响之后的出现次数的叠加。
在一种可能实现方式中,电子设备在局部计数器中将第四出现次数替换第三出现次数之后,若该第四出现次数等于该预设阈值,则将全局计数器中第二内存空间的容量的出现次数增加该第四出现次数,同时将局部计数器中的第四出现次数更改为0。
例如,预设阈值为10,全局计数器中第二内存空间的容量的出现次数为3050,局部计数器中第二内存空间的容量的出现次数为9,当电子设备将第二内存空间分配给目标日志后,局部计数器中的第三出现次数加1,得到第四出现次数10,此时,全局计数器中第二内存空间的容量的出现次数叠加10后,得到的总出现次数为3060。而局部计数器中的第四出现次数由10更改为0。
需要说明的是,对于任一标准容量,该标准容量可以具有一个或多个对应的线程,而每个线程具有唯一关联的局部计数器。对于该标准容量,当该标准容量对应的任一局部计数器中的出现次数等于预设阈值时,全局计数器中该标准容量的出现次数均加上等于该预设阈值的出现次数,将该局部计数器中的出现次数清零。通过为一个标准容量设置多个对应的线程的方式,可以在该标准容量的出现次数较多时,将出现次数累加在不同的局部计数器中,缓解系统的运行压力以及全局计数器的次数累加压力,提高计数效率。
为了避免同一个标准容量的多个局部计数器同时向全局计数器叠加出现次数,电子设备可以为每个局部计数器与全局计数器之间的连接通道设置自锁功能,该自锁功能可以在任一个局部计数器向全局计数器发送出现次数时,将该局部计数器与全局计数器之间的连接通道进行锁定,其他局部计数器无法插入,降低各个局部计数器之间的锁争用,从而避免对当前局部计数器与全局计数器之间的数据传送带来干扰,有效提高了全局计数器中标准容量的出现次数的准确度。
例如,电子设备具有多个局部计数器的情况如图3所示,四个标准容量分别为1024、2048、4096和8192,若标准容量1024具有3个对应的线程:线程1、线程2和线程3,这3个线程各自关联的局部计数器分别为局部计数器1、局部计数器2和局部计数器3。若当前线程2关联的局部计数器2正在与全局计数器进行交互,此时即使通过线程1向关联的局部计数器1中添加了一个出现次数n,n为正整数,局部计数器1也无法插入局部计数器2与全局计数器的交互进程中,只有在局部计数器2与全局计数器完成交互后,局部计数器1才可以与全局计数器进行交互。并且,全局计数器获取到局部计数器2发送的出现次数后,将该出现次数叠加在全局计数器中标准容量1024的出现次数上,得到标准容量1024当前最新的出现次数。
另外,根据上述四个标准容量的出现次数,可以得到该四个标准容量的分布情况,该分布情况为:{“1024”:H,“2048”:J,“4096”:K,“8192”:L},后续,可以根据这四个标准容量的分布情况,确定对应的参考容量。其中,H、J、K和L均为正整数。
由于全局计数器中每个标准容量的出现次数可以表示目前已经出现的、容量为每个标准容量的历史日志的数量,因此在后续过程中,可以根据全局计数器中每个标准容量的出现次数继续进行统计处理,从而继续为后续的日志分配内存空间。
关于根据局部计数器中的出现次数与预设阈值之间的关系确定是否向全局计数器叠加出现次数的过程,参见图4和图5,以任一标准容量为例,该过程包括:
1、获取该标准容量的出现次数n。
2、将出现次数n累加至局部计数器中,得到出现次数m。
3、判断局部计数器中的出现次数m是否小于预设阈值,若该出现次数m不小于该预设阈值,则执行步骤4,若该出现次数m小于该预设阈值,则执行步骤5。
4、将出现次数m叠加至全局计数器中的该标准容量的出现次数上。
5、结束。
通过对设置局部计数器的方式和不设置局部计数器这两种方式分别进行测试后确定:设置局部计数器的方式能够有效缓解系统的运行压力,减小了系统的性能开销。
基于本申请实施例提供的方法为目标日志分配的内存空间,与目标日志的匹配程度高,对于不同的日志,均可以得到匹配程度高的内存空间。因此本申请实施例提供的方法通过对历史日志的容量进行统计处理,以及利用自适应技术针对不同情形的特点进行自适应调整,可以使分配的内存空间的容量尽可能适应不同特点的变化,减小了系统的性能开销,还可以在保证吞吐量的同时,提升内存空间的利用率。
本申请实施例提供的方法,获取多条历史日志的容量和多个标准容量,根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数,根据每个标准容量的出现次数进行统计处理,得到参考容量,根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,将第二内存空间分配给目标日志,将该第二内存空间的容量的出现次数加1。由于该参考容量是以历史日志为依据确定的,因此该参考容量的适配性高,降低了根据参考容量对第一内存空间进行调整处理时的调整幅度,通过调整处理,还可以得到更为匹配的第二内存空间,将该第二内存空间分配给目标日志,提高了分配给目标日志的内存空间的准确度,还降低了系统的性能损耗,提升了系统的运行效率。
并且,由于参考容量的适配性高,若参考容量大于第一内存空间的容量,则基于参考容量对第一内存空间进行扩容处理时,可以有效降低扩容处理的次数。若参考容量小于第一内存空间的容量,则基于参考容量对第一内存空间进行裁剪处理时,节省内存空间,提高内存空间的利用率。
需要说明的第一点是,为目标日志分配第二内存空间之后,如果不再需要继续存储该目标日志,则可以将该第二内存空间中被占用的内存空间清空,从而删除该目标日志。之后,电子设备可以将清空后的第二内存空间作为待分配的内存空间,继续使用。若再次获取另一个日志时,可以根据多条历史日志确定新的一个容量后,电子设备继续根据该新确定的容量对该第二内存空间进行调整处理,将处理后的内存空间分配给该新获取的日志。
需要说明的第二点是电子设备可以同时为多个日志分配内存空间,为此,电子设备可以从多个待选内存空间中分别为该多个日志各选择一个内存空间,作为对应日志的待分配内存空间。另外,任一被清空的内存空间,均可作为待选内存空间,以便后续继续分配给其他日志。
需要说明的第三点是,在终端为目标日志分配完内存空间后,存储将该目标日志以及为该目标日志分配的第二内存空间的容量,或者将该目标日志以及为该目标日志分配的第二内存空间的容量上传至服务器,由服务器存储,以便后续为再次向其他日志分配内存空间提供依据。
另外,本申请实施例提供的方法可以设置一个接口的形式,提供给应用,该应用通过调用该接口触发执行本申请实施例提供的方法,确定分配给目标日志的内存空间,将该内存空间分配给目标日志。
例如,在使用Java语言(一种面向网络的程序设计语言)创建应用时,可以通过Java语言的日志架构创建日志,在该过程中,以Java语言的原生对象作为一个接口,当需要为任一日志分配内存空间时,调用该接口,可以基于Java语言的原生对象对日志进行调用、向目标进行输出以及对日志的字符串信息进行格式化处理,以便执行后续的步骤。
基于上述实施例提供的方法,对将目标日志写入磁盘进行存储的过程进行说明,参见图6和图7。
1、调用记录模块,获取记录的目标信息。
2、将该目标信息输入至记录器配置模块中。
3、记录器配置模块将输入的目标信息发送至日志创建模块中,日志创建模块根据该目标信息创建了目标日志。
4、日志创建模块将创建好的目标日志发送给记录器配置模块。
5、记录器配置模块通过调用附加程序,将目标日志传送给附加器模块。
6、附加器模块确定输出的目标位置为队列,也即是向队列输出目标日志。
7、异步线程定期轮询队列,从队列中获取目标日志,对目标日志进行编码处理,将编码处理后的目标日志输入至格式化模块中。
其中,结合上述实施例提供的方法,步骤7中对目标日志进行编码处理的过程还至少包括以下步骤:
(1)对在磁盘中存储历史日志的内存空间的使用情况进行统计,得到参考容量。
(2)在磁盘中获取待分配的第一内存空间,根据参考容量对该第一内存空间进行调整处理,得到第二内存空间。
8、格式化模块根据预先设置的配置参数对目标日志进行格式化处理,将该目标日志以该配置参数对应的格式输出。
9、在磁盘的第二内存空间中写入格式化后的目标日志。
需要说明的是,记录器配置模块、附加器模块和格式化模块均具有各自的配置参数,这3个模块的配置参数均是根据系统的参数配置模块中的参数确定的。
图8是本申请实施例提供的一种内存空间分配装置的结构图。参见图8,该装置包括:容量获取模块801、次数获取模块802、统计模块803、调整模块804和分配模块805。
容量获取模块801,用于获取多条历史日志的容量和多个标准容量,多个标准容量均为单位容量的整数倍,不同标准容量相对于单位容量的倍数不同;
次数获取模块802,用于根据多条历史日志的容量,获取多个标准容量中每个标准容量的出现次数;
统计模块803,用于根据每个标准容量的出现次数进行统计处理,得到参考容量;
调整模块804,用于根据参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,第一内存空间的容量为单位容量的整数倍,第二内存空间的容量不小于参考容量且为单位容量的整数倍;
分配模块805,用于将第二内存空间分配给目标日志。
在一种可能实现方式中,参见图9,调整模块804,包括:
扩容单元8041,用于如果第一内存空间的容量小于参考容量,则对第一内存空间进行扩容处理,得到第二内存空间,以使第二内存空间的容量不小于参考容量。
在另一种可能实现方式中,参见图9,调整模块802,包括:
裁剪单元8042,用于如果第一内存空间的容量大于参考容量,则对第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量。
在另一种可能实现方式中,参见图9,裁剪单元8042,还用于如果第一内存空间的容量与参考容量的差值不小于单位容量,则对第一内存空间进行裁剪处理,得到第二内存空间,以使第二内存空间的容量小于第一内存空间的容量且不小于参考容量。
在另一种可能实现方式中,参见图9,次数获取模块802,包括:
容量获取单元8021,用于获取多条历史日志中每条历史日志所分配的内存空间的容量;
次数获取单元8022,用于根据每条历史日志所分配的内存空间的容量,获取多个标准容量中每个标准容量的出现次数。
在另一种可能实现方式中,参见图9,装置还包括:
次数增加模块806,用于将第二内存空间的容量的出现次数加1。
在另一种可能实现方式中,参见图9,次数增加模块806,包括:
查询单元8061,用于在全局计数器中查询第二内存空间的容量的第一出现次数,全局计数器用于存储多个标准容量及每个标准容量的出现次数;
次数增加单元8062,用于将第一出现次数加1,得到第二出现次数;
替换单元8063,用于在全局计数器中,将第二出现次数替换第一出现次数。
在另一种可能实现方式中,参见图9,每个标准容量具有对应的线程,次数增加模块806,包括:
次数获取单元8064,用于通过第二内存空间的容量对应的目标线程,从目标线程关联的局部计数器中获取第二内存空间的容量的第三出现次数;
次数增加单元8062,用于将第三出现次数加1,得到第四出现次数;
替换单元8063,用于在局部计数器中,将第四出现次数替换第三出现次数。
在另一种可能实现方式中,参见图9,装置还包括:
次数调整模块807,用于如果第四出现次数等于预设阈值,则将全局计数器中第二内存空间的容量的出现次数增加第四出现次数,将局部计数器中的第四出现次数更改为0,全局计数器用于存储多个标准容量及每个标准容量的出现次数。
需要说明的是:上述实施例提供的内存空间分配装置在分配内存空间时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的内存空间分配装置与内存空间分配方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10示出了本申请一个示例性实施例提供的终端1000的结构框图。该终端1000可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio LayerIII,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group AudioLayer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1000还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1000包括有:处理器1001和存储器1002。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的内存空间分配方法。
在一些实施例中,终端1000还可选包括有:外围设备接口1003和至少一个外围设备。处理器1001、存储器1002和外围设备接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1003相连。具体地,外围设备包括:射频电路1004、触摸显示屏1005、摄像头1006、音频电路1007、定位组件1008和电源1009中的至少一种。
外围设备接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和外围设备接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和外围设备接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,设置终端1000的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在终端1000的不同表面或呈折叠设计;在再一些实施例中,显示屏1005可以是柔性显示屏,设置在终端1000的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1006用于采集图像或视频。可选地,摄像头组件1006包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1006还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1007可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1001进行处理,或者输入至射频电路1004以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1000的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1001或射频电路1004的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1007还可以包括耳机插孔。
定位组件1008用于定位终端1000的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1008可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1009用于为终端1000中的各个组件进行供电。电源1009可以是交流电、直流电、一次性电池或可充电电池。当电源1009包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1000还包括有一个或多个传感器1010。该一个或多个传感器1010包括但不限于:加速度传感器1011、陀螺仪传感器1012、压力传感器1013、指纹传感器1014、光学传感器1015以及接近传感器1016。
加速度传感器1011可以检测以终端1000建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1011可以用于检测重力加速度在三个坐标轴上的分量。处理器1001可以根据加速度传感器1011采集的重力加速度信号,控制触摸显示屏1005以横向视图或纵向视图进行用户界面的显示。加速度传感器1011还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1012可以检测终端1000的机体方向及转动角度,陀螺仪传感器1012可以与加速度传感器1011协同采集用户对终端1000的3D动作。处理器1001根据陀螺仪传感器1012采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1013可以设置在终端1000的侧边框和/或触摸显示屏1005的下层。当压力传感器1013设置在终端1000的侧边框时,可以检测用户对终端1000的握持信号,由处理器1001根据压力传感器1013采集的握持信号进行左右手识别或快捷操作。当压力传感器1013设置在触摸显示屏1005的下层时,由处理器1001根据用户对触摸显示屏1005的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1014用于采集用户的指纹,由处理器1001根据指纹传感器1014采集到的指纹识别用户的身份,或者,由指纹传感器1014根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1001授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、资源转移及更改设置等。指纹传感器1014可以被设置终端1000的正面、背面或侧面。当终端1000上设置有物理按键或厂商Logo时,指纹传感器1014可以与物理按键或厂商Logo集成在一起。
光学传感器1015用于采集环境光强度。在一个实施例中,处理器1001可以根据光学传感器1015采集的环境光强度,控制触摸显示屏1005的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1005的显示亮度;当环境光强度较低时,调低触摸显示屏1005的显示亮度。在另一个实施例中,处理器1001还可以根据光学传感器1015采集的环境光强度,动态调整摄像头组件1006的拍摄参数。
接近传感器1016,也称距离传感器,通常设置在终端1000的前面板。接近传感器1016用于采集用户与终端1000的正面之间的距离。在一个实施例中,当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变小时,由处理器1001控制触摸显示屏1005从亮屏状态切换为息屏状态;当接近传感器1016检测到用户与终端1000的正面之间的距离逐渐变大时,由处理器1001控制触摸显示屏1005从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图10中示出的结构并不构成对终端1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图11是本申请实施例提供的一种服务器的结构示意图,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central ProcessingUnits,CPU)1101和一个或一个以上的存储器1102,其中,该存储器1102中存储有至少一条指令,该至少一条指令由该处理器1101加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由电子设备中的处理器执行以完成上述实施例中内存空间分配方法。例如,该计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,还提供了一种计算机程序,该计算机程序包括至少一条指令,该指令由处理器加载并执行以实现如上述实施例中内存空间分配方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种内存空间分配方法,其特征在于,所述方法包括:
获取多条历史日志的容量和多个标准容量,所述多个标准容量均为单位容量的整数倍,不同标准容量相对于所述单位容量的倍数不同;
根据所述多条历史日志的容量,获取所述多个标准容量中每个标准容量的出现次数;
根据所述每个标准容量的出现次数进行统计处理,得到参考容量;
根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,所述第一内存空间的容量为所述单位容量的整数倍,所述第二内存空间的容量不小于所述参考容量且为所述单位容量的整数倍;
将所述第二内存空间分配给目标日志;
所述根据所述多条历史日志的容量,获取所述多个标准容量中每个标准容量的出现次数,包括:
获取所述多条历史日志中每条历史日志所分配的内存空间的容量;
根据所述每条历史日志所分配的内存空间的容量,获取所述多个标准容量中每个标准容量的出现次数;
所述根据所述每个标准容量的出现次数进行统计处理,得到参考容量,包括:确定出现次数最多的标准容量为参考容量;或者将标准容量的出现次数按照从大到小的顺序排列,参考容量为位于该顺序排列的前预设数量个标准容量中的任一个;或者获取多个标准容量的出现次数的平均值,将出现次数大于该平均值的任一标准容量,确定为参考容量;或者根据获取到的多个标准容量的出现次数,对该多个标准容量进行加权平均处理,得到加权平均值,将该多个标准容量中大于该加权平均值的任一标准容量,确定为参考容量。
2.根据权利要求1所述的方法,其特征在于所述根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:
如果所述第一内存空间的容量小于所述参考容量,则对所述第一内存空间进行扩容处理,得到所述第二内存空间,以使所述第二内存空间的容量不小于所述参考容量。
3.根据权利要求1所述的方法,其特征在于,所述根据所述参考容量,对待分配的第一内存空间进行调整处理,得到第二内存空间,包括:
如果所述第一内存空间的容量大于所述参考容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量。
4.根据权利要求3所述的方法,其特征在于,所述如果所述第一内存空间的容量大于所述参考容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量,包括:
如果所述第一内存空间的容量与所述参考容量的差值不小于所述单位容量,则对所述第一内存空间进行裁剪处理,得到所述第二内存空间,以使所述第二内存空间的容量小于所述第一内存空间的容量且不小于所述参考容量。
5.根据权利要求1所述的方法,其特征在于,所述将所述第二内存空间分配给目标日志之后,所述方法还包括:
将所述第二内存空间的容量的出现次数加1。
6.根据权利要求5所述的方法,其特征在于,所述将所述第二内存空间的容量的出现次数加1,包括:
在全局计数器中查询所述第二内存空间的容量的第一出现次数,所述全局计数器用于存储所述多个标准容量及所述每个标准容量的出现次数;
将所述第一出现次数加1,得到第二出现次数;
在所述全局计数器中,将所述第二出现次数替换所述第一出现次数。
7.根据权利要求5所述的方法,其特征在于,所述每个标准容量具有对应的线程,所述将所述第二内存空间的容量的出现次数加1,包括:
通过所述第二内存空间的容量对应的目标线程,从所述目标线程关联的局部计数器中获取所述第二内存空间的容量的第三出现次数;
将所述第三出现次数加1,得到第四出现次数;
在所述局部计数器中,将所述第四出现次数替换所述第三出现次数。
8.根据权利要求7所述的方法,其特征在于,所述在所述局部计数器中,将所述第四出现次数替换所述第三出现次数之后,所述方法还包括:
如果所述第四出现次数等于所述预设阈值,则将全局计数器中所述第二内存空间的容量的出现次数增加所述第四出现次数,将所述局部计数器中的所述第四出现次数更改为0,所述全局计数器用于存储所述多个标准容量及所述每个标准容量的出现次数。
9.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条指令,所述至少一条指令由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求8任一项所述的内存空间分配方法所执行的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至权利要求8任一项所述的内存空间分配方法所执行的操作。
CN202010220587.2A 2020-03-25 2020-03-25 内存空间分配方法、装置、电子设备及存储介质 Active CN111459410B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010220587.2A CN111459410B (zh) 2020-03-25 2020-03-25 内存空间分配方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010220587.2A CN111459410B (zh) 2020-03-25 2020-03-25 内存空间分配方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN111459410A CN111459410A (zh) 2020-07-28
CN111459410B true CN111459410B (zh) 2023-08-29

Family

ID=71685679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010220587.2A Active CN111459410B (zh) 2020-03-25 2020-03-25 内存空间分配方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111459410B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112711387B (zh) * 2021-01-21 2023-06-09 维沃移动通信有限公司 缓冲区容量的调整方法、装置、电子设备及可读存储介质
CN113900906B (zh) * 2021-10-28 2024-07-23 北京达佳互联信息技术有限公司 日志容量确定方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109492018A (zh) * 2018-09-12 2019-03-19 武汉达梦数据库有限公司 一种数据同步系统自适应动态调整方法和装置
CN109766182A (zh) * 2018-12-18 2019-05-17 平安科技(深圳)有限公司 系统资源动态扩缩容方法、装置、计算机设备及存储介质
CN110008021A (zh) * 2019-03-05 2019-07-12 平安科技(深圳)有限公司 内存管理方法、装置、电子设备及计算机可读存储介质
CN110209502A (zh) * 2019-06-05 2019-09-06 北京奇艺世纪科技有限公司 一种信息存储方法、装置、电子设备及存储介质
CN110300134A (zh) * 2018-03-22 2019-10-01 杭州海康威视系统技术有限公司 云存储资源池的存储空间调整方法、装置及云存储系统
CN110389876A (zh) * 2019-06-18 2019-10-29 平安科技(深圳)有限公司 基础资源容量监管方法、装置、设备及存储介质
CN110543432A (zh) * 2019-09-09 2019-12-06 Oppo广东移动通信有限公司 内存碎片整理方法、装置、终端及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110300134A (zh) * 2018-03-22 2019-10-01 杭州海康威视系统技术有限公司 云存储资源池的存储空间调整方法、装置及云存储系统
CN109492018A (zh) * 2018-09-12 2019-03-19 武汉达梦数据库有限公司 一种数据同步系统自适应动态调整方法和装置
CN109766182A (zh) * 2018-12-18 2019-05-17 平安科技(深圳)有限公司 系统资源动态扩缩容方法、装置、计算机设备及存储介质
CN110008021A (zh) * 2019-03-05 2019-07-12 平安科技(深圳)有限公司 内存管理方法、装置、电子设备及计算机可读存储介质
CN110209502A (zh) * 2019-06-05 2019-09-06 北京奇艺世纪科技有限公司 一种信息存储方法、装置、电子设备及存储介质
CN110389876A (zh) * 2019-06-18 2019-10-29 平安科技(深圳)有限公司 基础资源容量监管方法、装置、设备及存储介质
CN110543432A (zh) * 2019-09-09 2019-12-06 Oppo广东移动通信有限公司 内存碎片整理方法、装置、终端及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈侨安 ; 李峰 ; 曹越 ; 龙明盛 ; .基于运行数据分析的Spark任务参数优化.计算机工程与科学.(第01期),全文. *

Also Published As

Publication number Publication date
CN111459410A (zh) 2020-07-28

Similar Documents

Publication Publication Date Title
CN110232048B (zh) 日志文件的获取方法、装置及存储介质
CN111177137B (zh) 数据去重的方法、装置、设备及存储介质
CN110380904B (zh) 带宽分配方法、装置、电子设备及存储介质
CN110147380B (zh) 数据更新方法、装置、服务器以及存储介质
CN110535890B (zh) 文件上传的方法和装置
CN111862972B (zh) 语音交互服务方法、装置、设备及存储介质
CN111459410B (zh) 内存空间分配方法、装置、电子设备及存储介质
CN115766490A (zh) 校准数据的获取方法、校准数据的存储方法、装置及设备
CN113099378B (zh) 定位方法、装置、设备及存储介质
CN110471614B (zh) 一种存储数据的方法、检测终端的方法及装置
CN111986227B (zh) 轨迹生成方法、装置、计算机设备及存储介质
CN110971840B (zh) 视频贴图方法及装置、计算机设备及存储介质
CN114785766B (zh) 智能设备的控制方法、终端及服务器
CN113949678B (zh) 流量控制方法、装置、电子设备及计算机可读存储介质
CN114143280B (zh) 会话显示方法、装置、电子设备及存储介质
CN110113669A (zh) 获取视频数据的方法、装置、电子设备及存储介质
CN116842047A (zh) 缓存更新方法、装置、设备及计算机可读存储介质
CN111708669B (zh) 系统运行的分析方法、装置、设备及存储介质
CN115344537A (zh) 存储空间分配的方法、装置、文件系统和存储介质
CN112597417B (zh) 页面更新方法、装置、电子设备及存储介质
CN109344284B (zh) 歌曲文件的播放方法、装置、设备及存储介质
CN110519319B (zh) 一种分裂分区的方法及装置
CN113301422A (zh) 获取视频封面的方法、终端及存储介质
CN111400544B (zh) 视频数据的存储方法、装置、设备及存储介质
CN112749583A (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
GR01 Patent grant
GR01 Patent grant