CN111522658A - 一种水务系统的内存管理方法 - Google Patents
一种水务系统的内存管理方法 Download PDFInfo
- Publication number
- CN111522658A CN111522658A CN202010292422.6A CN202010292422A CN111522658A CN 111522658 A CN111522658 A CN 111522658A CN 202010292422 A CN202010292422 A CN 202010292422A CN 111522658 A CN111522658 A CN 111522658A
- Authority
- CN
- China
- Prior art keywords
- memory
- barrel
- bucket
- allocation
- management method
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 140
- 238000007726 management method Methods 0.000 title claims abstract description 22
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 title claims abstract description 17
- 238000009826 distribution Methods 0.000 claims abstract description 10
- 230000007246 mechanism Effects 0.000 claims abstract description 8
- 238000005457 optimization Methods 0.000 claims abstract description 5
- 238000000034 method Methods 0.000 claims description 10
- 238000003860 storage Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/06—Energy or water supply
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种水务系统的内存管理方法,优化步骤如下:步骤一、程序运行时首先判断申请的内存是否太大;步骤二、如果上次分配的内存桶中有空余内存;步骤三、如果有,则重新启用该桶完成内存分配,否则尝试查找有空余空间的桶,如果能够找到,在桶中完成分配即可;步骤四、最后,则尝试重新分配新的桶,从而完成内存分配。其技术方案要点是,能够快速的分配小对象的内存,效率达到Windows系统提供的内存分配的若干倍;能够跟踪所有分配的对象的内存,无论是在调试环境还是在运行环境都能提供内存泄漏的报告;能够提供内存分配和释放的自动化机制,简化程序的编写。
Description
技术领域
本发明涉及水务系统领域,特别涉及一种水务系统的内存管理方法。
背景技术
随着近几年国家对环保的高度重视,我国水务行业进入高速发展期,各家水务公司针对自身业务进行了多种信息化尝试。但是,整个领域也面临着诸多问题,离真正的强大和成熟还有较远距离。目前迫切需要对所有系统进行整合联网,信息共享,实现供水生产、管网运行、客户服务、工程项目、应急处理等业务信息的自动化分析处理,从而打造物联网智能水务。即通过实时数据采集平台,采用地理信息可视化方式,有机整合,形成“城市供水物联网”,做出相应的处理结果与辅助决策建议,以达到更加精细和动态的方式对整个供水系统的生产、管理和服务流程进行数字化管理的目的。
水务系统需要面对大量的数据存储,大量的小内存的分配和释放的占用空间和效率问题,如果太大的内存管理不在原有内存池的范围内,则会导致效率退化,为此,我们发明一种水务系统的内存管理方法来解决上述问题。
发明内容
为了克服现有技术的不足,本发明的目的是为了解决大量的小内存的分配和释放的占用空间和效率问题,太大的内存管理不在本内存池的范围内,否则本内存池如果适应所有大小的内存的管理,那么效率将会退化,接近系统内存的分配效率。
本发明的上述技术目的是通过以下技术方案得以实现的:
一种水务系统的内存管理方法,按照大小来分类管理的,内部包含很多小的内存池,每个对应一组固定大小的内存分配和释放,每个固定分配大小的内存池,内部又是采用桶的方式来管理,每次分配一桶内存相当于255个内存单位,桶组织成平衡二叉树,方便于快速的查找和定位。
进一步的,所述存储方法的优化步骤如下:
步骤一、程序运行时首先判断申请的内存是否太大;
步骤二、如果上次分配的内存桶中有空余内存;
步骤三、如果有,则重新启用该桶完成内存分配,否则尝试查找有空余空间的桶,如果能够找到,在桶中完成分配即可;
步骤四、最后,则尝试重新分配新的桶,从而完成内存分配。
进一步的,所述存储方法的步骤一,如果申请的内存太大则直接调用系统的内存分配函数分配内存,否则先根据内存的大小选择一个特定大小的内存池,然后判断上次操作的内存桶的内存情况。
进一步的,所述存储方法的步骤二中,如果有空余内存,则直接在桶中分配内存即可,如果没有空余空间,则查找高速缓存中是否有空余桶。
进一步的,所述存储方法针对内存分配和释放方式做如下优化:
顺序分配内存,同时顺次释放内存;使用上次操作桶优先机制,每次分配时记住当前的桶,下次再分配时首先查找当前桶中是否还有空余内存,有则立刻分配,没有再做二叉树的查找。
进一步的,所述顺序分配内存,同时逆序释放内存。
进一步的,所述循环中反复分配释放内存:高速缓冲2桶内存,一个桶如果全空需要释放时,并不立刻释放,而是将它放入高速缓存中,只有高速缓存已满的时候才会释放,分配时先检查高速缓存。
综上所述,本发明具有以下有益效果:
1、能够快速的分配小对象的内存,效率达到Windows系统提供的内存分配的若干倍,在特殊情况下可能提高一或两个数量级;
2、在内存利用率上,应该至少和Windows系统提供的内存分配机制相当;
3、能够跟踪所有分配的对象的内存,无论是在调试环境还是在运行环境都能提供内存泄漏的报告;
4、能够提供内存分配和释放的自动化机制,简化程序的编写。
附图说明
图1是本实施例中一种水务系统的内存管理方法的优化流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
其中相同的零部件用相同的附图标记表示。需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向,词语“底面”和“顶面”、“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。
参照图1所示,为本发明较优实施例中一种水务系统的内存管理方法,是按照大小来分类管理的,内部包含很多小的内存池,每个对应一组固定大小的内存分配和释放,每个固定分配大小的内存池,内部又是采用桶的方式来管理,每次分配一桶内存相当于255个内存单位,桶组织成平衡二叉树,方便于快速的查找和定位。
如图1所示,一种水务系统的内存管理方法的优化步骤如下:
本内存池是为了解决大量的小内存的分配和释放的占用空间和效率问题,太大的内存管理不在本内存池的范围内,否则本内存池如果适应所有大小的内存的管理,那么效率将会退化,接近系统内存的分配效率;
步骤一、程序运行时首先判断申请的内存是否太大,如果太大则直接调用系统的内存分配函数分配内存,否则先根据内存的大小选择一个特定大小的内存池,然后判断上次操作的内存桶的内存情况;
步骤二、如果上次分配的内存桶中有空余内存,则直接在桶中分配内存即可,如果没有空余空间,则查找高速缓存中是否有空余桶;
步骤三、如果有,则重新启用该桶完成内存分配,否则尝试查找有空余空间的桶,如果能够找到,在桶中完成分配即可;
步骤四、最后,则尝试重新分配新的桶,从而完成内存分配。
针对常用的内存分配和释放方式本专利做了优化,如下:
顺序分配内存,同时顺次释放内存;使用上次操作桶优先机制,每次分配时记住当前的桶,下次再分配时首先查找当前桶中是否还有空余内存,有则立刻分配,没有再做二叉树的查找;顺序分配内存,同时逆序释放内存;循环中反复分配释放内存:高速缓冲2桶内存,一个桶如果全空需要释放时,并不立刻释放,而是将它放入高速缓存中,只有高速缓存已满的时候才会释放,分配时先检查高速缓存。
本专利的内存管理具有以下优势:
1、能够快速的分配小对象的内存,效率达到Windows系统提供的内存分配的若干倍,在特殊情况下可能提高一或两个数量级;
2、在内存利用率上,应该至少和Windows系统提供的内存分配机制相当;
3、能够跟踪所有分配的对象的内存,无论是在调试环境还是在运行环境都能提供内存泄漏的报告;
4、能够提供内存分配和释放的自动化机制,简化程序的编写。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (7)
1.一种水务系统的内存管理方法,包括,其特征在于:按照大小来分类管理的,内部包含很多小的内存池,每个对应一组固定大小的内存分配和释放,每个固定分配大小的内存池,内部又是采用桶的方式来管理,每次分配一桶内存相当于255个内存单位,桶组织成平衡二叉树,方便于快速的查找和定位。
2.根据权利要求1所述的一种水务系统的内存管理方法,其特征在于:所述存储方法的优化步骤如下:
步骤一、程序运行时首先判断申请的内存是否太大;
步骤二、如果上次分配的内存桶中有空余内存;
步骤三、如果有,则重新启用该桶完成内存分配,否则尝试查找有空余空间的桶,如果能够找到,在桶中完成分配即可;
步骤四、最后,则尝试重新分配新的桶,从而完成内存分配。
3.根据权利要求2所述的一种水务系统的内存管理方法,其特征在于:所述存储方法的步骤一,如果申请的内存太大则直接调用系统的内存分配函数分配内存,否则先根据内存的大小选择一个特定大小的内存池,然后判断上次操作的内存桶的内存情况。
4.根据权利要求2所述的一种水务系统的内存管理方法,其特征在于:所述存储方法的步骤二中,如果有空余内存,则直接在桶中分配内存即可,如果没有空余空间,则查找高速缓存中是否有空余桶。
5.根据权利要求2所述的一种水务系统的内存管理方法,其特征在于:所述存储方法针对内存分配和释放方式做如下优化:
顺序分配内存,同时顺次释放内存;使用上次操作桶优先机制,每次分配时记住当前的桶,下次再分配时首先查找当前桶中是否还有空余内存,有则立刻分配,没有再做二叉树的查找。
6.根据权利要求5所述的一种水务系统的内存管理方法,其特征在于:所述顺序分配内存,同时逆序释放内存。
7.根据权利要求5所述的一种水务系统的内存管理方法,其特征在于:所述循环中反复分配释放内存:高速缓冲2桶内存,一个桶如果全空需要释放时,并不立刻释放,而是将它放入高速缓存中,只有高速缓存已满的时候才会释放,分配时先检查高速缓存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010292422.6A CN111522658A (zh) | 2020-04-14 | 2020-04-14 | 一种水务系统的内存管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010292422.6A CN111522658A (zh) | 2020-04-14 | 2020-04-14 | 一种水务系统的内存管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111522658A true CN111522658A (zh) | 2020-08-11 |
Family
ID=71902614
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010292422.6A Pending CN111522658A (zh) | 2020-04-14 | 2020-04-14 | 一种水务系统的内存管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111522658A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086449A1 (en) * | 2003-08-16 | 2005-04-21 | Samsung Electronics Co., Ltd. | Method and apparatus for managing memory |
CN101149703A (zh) * | 2007-10-10 | 2008-03-26 | 中兴通讯股份有限公司 | 一种固定内存的管理方法 |
CN102945163A (zh) * | 2012-10-29 | 2013-02-27 | 桂林电子科技大学 | 一种用于嵌入式系统的信号槽结构 |
-
2020
- 2020-04-14 CN CN202010292422.6A patent/CN111522658A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050086449A1 (en) * | 2003-08-16 | 2005-04-21 | Samsung Electronics Co., Ltd. | Method and apparatus for managing memory |
CN101149703A (zh) * | 2007-10-10 | 2008-03-26 | 中兴通讯股份有限公司 | 一种固定内存的管理方法 |
CN102945163A (zh) * | 2012-10-29 | 2013-02-27 | 桂林电子科技大学 | 一种用于嵌入式系统的信号槽结构 |
Non-Patent Citations (1)
Title |
---|
韩志刚: ""一个内存分配器的设计和实现"", 《万方数据》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491345B (zh) | 一种写入图片数据方法和分布式NewSQL数据库系统 | |
CN100589087C (zh) | 一种通用缓存的方法 | |
CN106681829A (zh) | 一种内存管理方法及系统 | |
CN105808323A (zh) | 一种虚拟机创建方法及系统 | |
US10783163B2 (en) | Instance-based distributed data recovery method and apparatus | |
CN101799808A (zh) | 一种数据处理方法及其系统 | |
CN111061788A (zh) | 一种基于云架构的多源异构数据转换整合系统及其实现方法 | |
CN105069134A (zh) | 一种Oracle统计信息自动收集方法 | |
CN102156700A (zh) | 数据库的访问方法、装置及系统 | |
CN102722432A (zh) | 追踪内存访问的方法和装置 | |
CN105450734A (zh) | 分布式存储ceph的数据分布优化方法 | |
CN102609467A (zh) | 数据库连接管理方法和装置 | |
CN105991478A (zh) | 服务器资源分配方法及其系统 | |
CN116842055A (zh) | 用于物联网数据批流一体处理的系统及方法 | |
CN105718319A (zh) | 一种内存池版图解析方法和内存池装置 | |
CN106033442A (zh) | 一种基于共享内存体系结构的并行广度优先搜索方法 | |
CN117933490B (zh) | 一种机场场面拖曳调度优化方法、电子设备和存储介质 | |
CN104573083A (zh) | 一种地图缓存服务自动更新方法 | |
CN111522658A (zh) | 一种水务系统的内存管理方法 | |
CN110659342A (zh) | 基于信息提取特征的规则库自动制图综合处理方法及系统 | |
BRPI0920319B1 (pt) | método para acessar dados de magnitude da base de dados de serviços de rede inteligente e sistema e dispositivo para ele | |
CN115510134A (zh) | 面向图-关系混合存储数据库的数据快速装载方法及系统 | |
CN102981964B (zh) | 数据存储空间的管理方法及系统 | |
CN101719134A (zh) | 一种信息控制系统及方法 | |
CN105843735A (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 |
Application publication date: 20200811 |
|
RJ01 | Rejection of invention patent application after publication |