CN114896178B - 一种内存清空的方法及装置、设备和存储介质 - Google Patents
一种内存清空的方法及装置、设备和存储介质 Download PDFInfo
- Publication number
- CN114896178B CN114896178B CN202210551227.XA CN202210551227A CN114896178B CN 114896178 B CN114896178 B CN 114896178B CN 202210551227 A CN202210551227 A CN 202210551227A CN 114896178 B CN114896178 B CN 114896178B
- Authority
- CN
- China
- Prior art keywords
- character string
- string type
- type variable
- address
- addresses
- 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
Links
Images
Classifications
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种内存清空的方法,包括以下步骤:步骤S1:搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;步骤S2:搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;步骤S3:统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空,减少不必要的数据保存。确保内存处于健康的状态。
Description
技术领域
本发明涉及机器人技术领域,特别是一种内存清空的方法及装置、设备和存储介质。
背景技术
工业机器人是广泛用于工业领域的多关节机械手或多自由度的机器装置,具有一定的自动性,可依靠自身的动力能源和控制能力实现各种工业加工制造功能。工业机器人被广泛应用于电子、物流、化工等各个工业领域之中。
在机器人运行时,程序会对运行的函数进行赋值或者在拼接时,会对函数的内容进行保存。当机器人运行的程序量较大时,函数所保存的数据量也会相应增加,占据大量的运行内存与存储内存,最终有可能引起机器人死机的情况发生。
发明内容
针对上述缺陷,本发明的目的在于提出一种内存清空的方法及装置、设备和存储介质,以减少机器人运行程序中的数据量保存量,确保内存处于健康的状态,使机器人能够保持正常的运作。
为达此目的,本发明采用以下技术方案:一种内存清空的方法,包括以下步骤:
步骤S1:搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;
步骤S2:搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;
步骤S3:统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空。
优选的,步骤S3中还包括步骤S31,所述步骤S31的具体步骤为:当字符串型变量地址的初始值和标记值之和为0时,获取该字符串型变量所引用的字符串型变量地址以及被赋值函数,以被引用的字符串型变量地址作为被赋值函数的引用基础。
优选的,所述步骤S1的具体步骤为:以string为搜索条件,对代码进行全面搜索,获取所有的字符串型函数,获取后对字符串型函数地址进行标记;
对标记后所述字符串型函数地址赋予1的初始值。
一种内存清空的装置,使用上述一种内存清空的方法包括搜索模块、计算模块以及清空模块;
所述搜索模块用于搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;
所述计算模块用于搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;
所述清空模块用于统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空。
优选的,还包括赋值模块,所述赋值模块用于当字符串型变量地址的初始值和标记值之和为0时,获取该字符串型变量所引用的字符串型变量地址以及被赋值函数,以被引用的字符串型变量地址作为被赋值函数的引用基础。
优选的,所述搜索模块还包括检索模块,所述检索模块用于以string为搜索条件,对代码进行全面搜索,获取所有的字符串型函数,获取后对字符串型函数地址进行标记;
对标记后所述字符串型函数地址赋予1的初始值。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述一种内存清空的方法。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一种内存清空的方法。
上述技术方案中的一个技术方案具有如下优点或有益效果:本申请通过获取字符串型变量地址在代码中的赋值关系,计算字符串型变量地址被调用的次数,当字符串型变量地址的标记值为0时对该字符串型变量进清除,减少不必要的数据保存。确保内存处于健康的状态。
附图说明
图1是本发明的一个实施例的方法的流程图;
图2是本发明的一个实施例的装置的结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”、“轴向”、“径向”、“周向”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
如图1~2所示,一种内存清空的方法,包括以下步骤:
步骤S1:搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;
步骤S2:搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;
步骤S3:统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空。
在程序的运行过程中,会存在多个不同的函数,不同函数之间所对应的功能也不一样。在众多函数中,存在有字符串型的字节赋值到函数中的情况。字符串型变量在运行中有生成、拼接、截取操作,其对于内存空间是会产生动态变化,而其他类型在赋值时是不需要动态申请内存空间的,字符串型类型的字节记录的是一串字符,长度和内容在运行期间可能发生变化,当多个函数相互赋值时,字符串型类型的字节的长度以及内容将会不断增加,从而导致运行内存与存储内存的不足。因此在本申请中,对不必要的字符串型变量进行清理,以减少内存不必要的占用。
首先在代码中找出有所的字符串型变量和对应的字符串型变量地址,并对字符串型变量地址进行标记以及赋予初始值。然后再搜索被标记字符串型字节的赋值关系,所述赋值关系仅仅为标记字符串型变量与标记字符串型变量地址之间赋值关系,该关系可以通过对代码搜索找出。当字符串型变量使用其他字符串型变量地址赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址赋值于其他字符串型变量时,该字符串型变量地址的标记值加1,最后统计字符串型变量地址的标记值以及初始值,若字符串型字节的标记值以及初始值之和等于0,对该字符串型变量进行清空。减少不必要的数据保存。确保内存处于健康的状态。
为了更加清楚的了解本方法的方案,以下方的一个实施例作解释。
在一个实施例中,存在有a、b两个字符串型变量和c函数,c函数为其他类型的函数。a、b两个变量的标记值的初始值为1,其中a=(1,2,3),此时只是对a函数进行赋值,不涉及字符串型变量地址的赋值关系,故无需计算标记值。然后将a变量赋值于b变量,c函数调用b变量,在此过程中,b变量通过所述a变量的字符串型变量地址进行赋值,此时a变量的标记值加1,a函数的字符串型变量地址标记值和初始值之和为2,相对的b变量的字符串型变量地址的标记值减1,b变量的标记值之和为0。需要清除保存b变量的数据,然后c函数调用b变量的过程中,将a变量作为c函数的引用基础。最终可以删除掉b变量以及清空关于b变量的内存空间。减少不必要的数据保存。确保内存处于健康的状态。
优选的,步骤S3中还包括步骤S31,所述步骤S31的具体步骤为:当字符串型变量地址的初始值和标记值之和为0时,获取该字符串型变量所引用的字符串型变量地址以及被赋值的函数或被赋值的变量,以被引用的字符串型变量地址作为被赋值的函数或被赋值的变量的引用基础。
避免不必要的内存在情况后,某些应用对象缺少了引用的基础,故采用需要被删除的字符串型变量其所引用的字符串型变量地址作为被删除字符串型变量被赋值的函数或被赋值的变量的引用基础。
优选的,所述步骤S1的具体步骤为:以string为搜索条件,对代码进行全面搜索,获取所有的字符串型变量,获取后对字符串型变量地址进行标记;
对标记后所述字符串型变量地址赋予1的初始值。
一种内存清空的装置,使用上述一种内存清空的方法包括搜索模块、计算模块以及清空模块;
所述搜索模块用于搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;
所述计算模块用于搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;
所述清空模块用于统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空。
优选的,还包括赋值模块,所述赋值模块用于当字符串型变量地址的初始值和标记值之和为0时,获取该字符串型变量所引用的字符串型变量地址以及被赋值的函数或被赋值的变量,以被引用的字符串型变量地址作为被赋值的函数或被赋值的变量的引用基础。
优选的,所述搜索模块还包括检索模块,所述检索模块用于以string为搜索条件,对代码进行全面搜索,获取所有的字符串型变量,获取后对字符串型变量地址进行标记;
对标记后所述字符串型变量地址赋予1的初始值。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述一种内存清空的方法。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一种内存清空的方法。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
Claims (6)
1.一种内存清空的方法,其特征在于,包括以下步骤:
步骤S1:搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;
步骤S2:搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;
步骤S3:统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空;
步骤S3中还包括步骤S31,所述步骤S31的具体步骤为:当字符串型变量地址的初始值和标记值之和为0时,获取该字符串型变量所引用的字符串型变量地址以及被赋值的函数或被赋值的变量,以被引用的字符串型变量地址作为被赋值的函数或被赋值的变量的引用基础。
2.根据权利要求1所述一种内存清空的方法,其特征在于,所述步骤S1的具体步骤为:以string为搜索条件,对代码进行全面搜索,获取所有的字符串型变量,获取后对字符串型变量地址进行标记;
对标记后所述字符串型变量地址赋予1的初始值。
3.一种内存清空的装置,使用权利要求1~2任一项所述的一种内存清空的方法,其特征在于,包括搜索模块、计算模块以及清空模块;
所述搜索模块用于搜索代码中所有的字符串型变量及其对应的字符串型变量地址,对所述字符串型变量地址进行标记并赋于字符串型变量地址初始值;
所述计算模块用于搜索被标记字符串型变量的赋值关系,当字符串型变量使用其他字符串型变量地址进行赋值时,该字符串型变量地址的标记值减1,当字符串型变量地址用于赋值其他字符串型变量时,该字符串型变量地址的标记值加1;
所述清空模块用于统计字符串型变量地址的标记值以及初始值,若字符串型变量地址的标记值和初始值之和小于或等于0,对该字符串型变量进行清空;
还包括赋值模块,所述赋值模块用于当字符串型变量地址的初始值和标记值之和为0时,获取该字符串型变量所引用的字符串型变量地址以及被赋值的函数或被赋值的变量,以被引用的字符串型变量地址作为被赋值的函数或被赋值的变量的引用基础。
4.根据权利要求3所述的一种内存清空的装置,其特征在于,所述搜索模块还包括检索模块,所述检索模块用于以string为搜索条件,对代码进行全面搜索,获取所有的字符串型变量,获取后对字符串型变量地址进行标记;
对标记后所述字符串型变量地址赋予1的初始值。
5.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~2中任一所述的方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1~2中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210551227.XA CN114896178B (zh) | 2022-05-20 | 2022-05-20 | 一种内存清空的方法及装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210551227.XA CN114896178B (zh) | 2022-05-20 | 2022-05-20 | 一种内存清空的方法及装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114896178A CN114896178A (zh) | 2022-08-12 |
CN114896178B true CN114896178B (zh) | 2022-12-02 |
Family
ID=82724310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210551227.XA Active CN114896178B (zh) | 2022-05-20 | 2022-05-20 | 一种内存清空的方法及装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114896178B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7505997B1 (en) * | 2004-05-03 | 2009-03-17 | Sun Microsystems, Inc. | Methods and apparatus for identifying cached objects with random numbers |
CN100367203C (zh) * | 2005-05-20 | 2008-02-06 | 腾讯科技(深圳)有限公司 | 一种字符串引用方法 |
CN101276272B (zh) * | 2007-03-28 | 2010-04-14 | 凌阳科技股份有限公司 | 支持多语用户界面的系统及其方法 |
JP4389981B2 (ja) * | 2007-08-06 | 2009-12-24 | ソニー株式会社 | 固体撮像装置、固体撮像装置のアナログ−デジタル変換方法および撮像装置 |
US10437720B2 (en) * | 2014-03-12 | 2019-10-08 | Optumsoft, Inc. | Deferred destruction for efficient resource reclamation |
CN106919454B (zh) * | 2017-01-25 | 2020-02-21 | 安科讯(福建)科技有限公司 | 基于lte协议栈的内存池问题定位方法及其系统 |
CN111736980B (zh) * | 2019-03-25 | 2024-01-16 | 华为技术有限公司 | 一种内存管理方法及装置 |
CN111158663B (zh) * | 2019-12-26 | 2021-07-02 | 深圳逻辑汇科技有限公司 | 用于处理程序代码中的变量的引用的方法和系统 |
-
2022
- 2022-05-20 CN CN202210551227.XA patent/CN114896178B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114896178A (zh) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10909029B2 (en) | Managing memory in a computer system | |
US5943675A (en) | Change log historian system for memory shared by multiple workstations | |
CN114896178B (zh) | 一种内存清空的方法及装置、设备和存储介质 | |
CN117236236B (zh) | 一种芯片设计数据管理方法、装置、电子设备及存储介质 | |
CN109992526A (zh) | 一种读写管理方法以及相关装置 | |
Che et al. | A polynomial algorithm for no-wait cyclic hoist scheduling in an extended electroplating line | |
CN111507430B (zh) | 基于矩阵乘法的特征编码方法、装置、设备及介质 | |
WO2023116573A1 (zh) | 调度方法、装置、电子设备及可读存储介质 | |
CN111427690A (zh) | 分散处理单元并行计算方法 | |
CN113534730B (zh) | 基于模型的plc控制代码生成方法、系统、装置及存储介质 | |
US7676651B2 (en) | Micro controller for decompressing and compressing variable length codes via a compressed code dictionary | |
JP4516046B2 (ja) | プログラマブルコントローラ | |
CN106982246A (zh) | 智能设备 | |
CN114840146A (zh) | 一种能在运行时的参数修改方法及系统、设备和存储介质 | |
CN114115926B (zh) | 一种程序共享方法、系统、计算机设备及可读存储介质 | |
CN109471771B (zh) | 一种Nucleus系统的动态内存池监测方法及装置 | |
CN113985760B (zh) | 应用于监测报警系统的基于arm的开关量处理方法 | |
JP4668562B2 (ja) | メモリマネジメントプログラムおよびメモリマネジメント方法 | |
CN110601890B (zh) | 一种网络性能分析方法、装置、设备及可读存储介质 | |
JP2605706B2 (ja) | 可変長情報処理装置 | |
CN118092877A (zh) | 面向可编程逻辑控制器的二进制代码语义转换方法及系统 | |
CN115826537A (zh) | 一种多机器人产线柔性调度方法 | |
CN115756533A (zh) | 可编程逻辑控制器程序管理方法、装置、设备及存储介质 | |
CN117217256A (zh) | 一种数据保存方法、装置、车辆、电子设备和存储介质 | |
CN116775274A (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 |