CN117076116A - 一种基于嵌入式产品的内存优化方法及相关装置 - Google Patents
一种基于嵌入式产品的内存优化方法及相关装置 Download PDFInfo
- Publication number
- CN117076116A CN117076116A CN202311039810.3A CN202311039810A CN117076116A CN 117076116 A CN117076116 A CN 117076116A CN 202311039810 A CN202311039810 A CN 202311039810A CN 117076116 A CN117076116 A CN 117076116A
- Authority
- CN
- China
- Prior art keywords
- data
- target storage
- memory
- storage data
- target
- 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
- 238000005457 optimization Methods 0.000 title claims abstract description 35
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000003068 static effect Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 5
- 230000011218 segmentation Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
本申请提供了一种基于嵌入式产品的内存优化方法及相关装置,该方法包括:检测待存储数据中是否存在目标存储数据;当存在目标存储数据时,将目标存储数据存入内存中;当运行目标存储数据时,将目标存储数据从内存的管道栈区中进行读取;当目标存储数据运行完成之后,将目标存储数据从管道栈区中释放。通过本申请方案的实施,将待存储数据中的目标存储数据存入内存中,内存中设置有管道栈区,管道栈是一种新型数据结构,存入数据时数据从管道栈的一边端口进栈,读取数据时数据可从两边端口同时出栈,数据全部出栈之后将目标存储数据从管道栈区中释放,能够有效提高内存的读取效率,进而提高产品的使用效率。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种基于嵌入式产品的内存优化方法及相关装置。
背景技术
一般的嵌入式产品,配置的内存很小,在内存的使用上就是要精打细算,及时清理掉闲置的程序及数据,将内存空间分配给运行中的程序,传统的技术手段采用堆栈原理,堆栈数据的进出原则是先进后出,其中栈是一种数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。
但对嵌入式产品来讲,先进后出并不是理想的模式,许多时候新调入内存的程序及数据要持续应用一段时间,但早期的程序及数据可能已经占满了内存,就会影响新的程序及数据的调入。
发明内容
本申请提供了一种基于嵌入式产品的内存优化方法及相关装置,至少能够解决相关技术中传统的堆栈模式容易影响嵌入式产品的使用效率的问题。
本申请实施例第一方面提供了一种内存优化方法,包括:
检测待存储数据中是否存在目标存储数据;
当存在所述目标存储数据时,将所述目标存储数据存入内存中;
当运行所述目标存储数据时,将所述目标存储数据从所述内存的管道栈区中进行读取;其中,所述管道栈为一种单口进、双口出的新型数据结构;
当所述目标存储数据运行完成之后,将所述目标存储数据从所述管道栈区中释放。
通过采用上述方案,将待存储数据中的目标存储数据存入内存中,内存中设置有管道栈区,管道栈是一种新型数据结构,存入数据时数据从管道栈的一边端口进栈,读取数据时数据可从两边端口同时出栈,数据全部出栈之后将目标存储数据从管道栈区中释放,能够有效提高内存的读取效率,进而提高产品的使用效率。
可选的,所述检测待存储数据中是否存在目标存储数据的步骤,包括:
获取所述待存储数据;
根据最小数据分割算法将所述待存储数据分割成N个数据;其中,N为大于或等于2的整数;
检测所述N个数据中是否存在待运行的所述目标存储数据。
通过采用上述方案,通过对待存储数据进行最小数据分割确定待存储数据中的最小存储单位,从而有效减少内存的占用。
可选的,所述内存包括静态存储区,所述当存在所述目标存储数据时,将所述目标存储数据存入内存中的步骤,包括:
检测所述目标存储数据的类型;
当所述目标存储数据为系统数据时,将所述目标存储数据存储至所述静态存储区;
当所述目标存储数据为非系统数据时,将所述目标存储数据存储至所述管道栈区。
通过采用上述方案,根据不同的数据类型将目标存储数据存入内存的不同存储区中,有效提高内存的利用效率。
可选的,所述方法还包括:
当运行所述系统数据时,生成目标临时变量;
将所述系统数据的全局变量赋值给所述目标临时变量;
对所述目标临时变量进行读取之后,将所述目标临时变量的值赋回所述全局变量。
通过采用上述方案,当运行系统数据时,将系统数据的全局变量赋值给临时变量,通过临时变量在管道栈区的快速读取,提高系统数据的读取效率。
可选的,所述管道栈区包括管道出口和管道入口,所述将所述目标存储数据存储至所述管道栈区的步骤,包括:
将所述目标存储数据从所述管道入口存储至所述所述管道栈区;
所述当运行所述目标存储数据时,将所述目标存储数据从所述内存的管道栈区中进行读取的步骤,包括:
当运行所述目标存储数据时,将所述目标存储数据从所述管道出口和所述管道入口同时进行读取。
通过采用上述方案,将目标存储数据从管道入口存储至管道栈区,当运行目标存储数据时,将目标存储数据从管道出口和管道入口同时进行读取,单口进、双口出的工作模式能够有效提高数据读取效率。
可选的,所述方法还包括:
根据所述目标存储数据的执行频率和数据价值确定所述目标存储数据的权重;
当所述内存剩余空间低于预设存储阈值时,释放所述权重低于预设权重阈值的第一目标存储数据;
当所述内存剩余空间高于预设存储阈值时,优先存储所述权重不低于预设权重阈值的第二目标存储数据。
通过采用上述方案,根据目标存储数据的执行频率和数据价值确定目标存储数据的权重,内存剩余空间低时释放权重低的第一目标存储数据,内存富余时优先存储权重高的第二目标存储数据,有效提高内存的利用效率。
可选的,当所述内存剩余空间低于预设存储阈值时,所述方法还包括:
检测嵌入式产品中是否存在外部存储器;
当存在外部存储器时,在所述外部存储器中划分出预设容量的虚拟缓存;
当检测到第三目标存储数据时,将所述第三目标存储数据存储至所述虚拟缓存中。
通过采用上述方案,当内存剩余空间低于预设存储阈值时,在外部存储器中划分为预设容量的虚拟缓存,当存在第三目标存储数据需要被存储时,将第三目标存储数据存储至虚拟缓存中,通过外部存储器分担内存的存储压力,提高产品的使用效率。
本申请实施例第二方面提供了一种内存优化装置,包括:
检测模块,用于检测待存储数据中是否存在目标存储数据;
存储模块,用于当存在所述目标存储数据时,将所述目标存储数据存入内存中;
读取模块,用于当运行所述目标存储数据时,将所述目标存储数据从所述内存的管道栈区中进行读取;其中,所述管道栈为一种单口进、双口出的新型数据结构;
释放模块,用于当所述目标存储数据运行完成之后,将所述目标存储数据从所述管道栈区中释放。
本申请实施例第三方面提供了一种电子设备,包括存储器及处理器,其中,所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,实现上述本申请实施例第一方面提供的内存优化方法中的各步骤。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的内存优化方法中的各步骤。
综上所述,本申请的有益效果为:
1.将待存储数据中的目标存储数据存入内存中,内存中设置有管道栈区,管道栈是一种新型数据结构,存入数据时数据从管道栈的一边端口进栈,读取数据时数据可从两边端口同时出栈,数据全部出栈之后将目标存储数据从管道栈区中释放,能够有效提高内存的读取效率,进而提高产品的使用效率。
2.根据目标存储数据的执行频率和数据价值确定目标存储数据的权重,内存剩余空间低时释放权重低的第一目标存储数据,内存富余时优先存储权重高的第二目标存储数据,有效提高内存的利用效率。
附图说明
图1为本申请实施例提供的内存优化方法的基本流程示意图;
图2为本申请实施例提供的内存优化装置的程序模块示意图;
图3为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决相关技术中传统的堆栈模式容易影响嵌入式产品的使用效率的问题,本申请实施例提供了一种内存优化方法,应用于嵌入式产品,如图1为本实施例提供的内存优化方法的基本流程图,该内存优化方法包括以下的步骤:
步骤110、检测待存储数据中是否存在目标存储数据。
具体的,在本实施例中,考虑到嵌入式产品配置的内存普遍偏小的问题,在将数据存入嵌入式产品的内存中之前,首先检测嵌入式设备接收到的待存储数据是否为需要运行的目标存储数据。可以理解的是,内存本身只会对接收到的数据进行存储,并不会区分接收到的数据中,哪些是目标存储数据,哪些是系统无法运行的无效数据,因此在数据存储之前需要对数据进行过滤,以免所有数据全部存入内存中导致内存紧张。
在本实施例一种可选的实施方式中,检测待存储数据中是否存在目标存储数据的步骤,包括:获取待存储数据;根据最小数据分割算法将待存储数据分割成N个数据;检测N个数据中是否存在待运行的目标存储数据。
具体的,N为大于或等于2的整数。在本实施例中,当查询目标文件时,CPU会发送查询指令给内存,内存在接收到查询指令之后就会与硬盘沟通,确定硬盘内是否存储目标文件,若存在则获取硬盘中的目标文件。但是在获取到的目标文件的待存储数据中,并非所有数据都需要存入到内存内运行,为了保证内存的读取效率,此时就需要通过最小数据分割算法将待存储数据进行分割,将待存储数据中的无效数据进行过滤,可以理解的是,最小数据分割算法将待存储数据分割成N个数据,其数据大小依据对应的数据类型而定,分割完成之后,再从N个数据中确定系统运行的目标存储数据。
步骤120、当存在目标存储数据时,将目标存储数据存入内存中。
具体的,内存包括栈区(由编译器自动分配释放,存放函数的参数值,局部变量的值等)、堆区(一般由程序员分配释放,若程序员不释放,程序结束时可能由操作系统回收)、全局区/静态区(全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后有系统释放)、文字常量区(存放常量字符串,程序结束后由系统释放)以及程序代码区(存放函数体的二进制代码)。在本实施例中,主要针对内存的栈区以及全局区/静态区进行优化,当存在目标存储数据时,对目标存储数据进行分类之后,根据目标存储数据的类型选择将目标存储数据存入栈区或者是全局区/静态区。
在本实施例一种可选的实施方式中,当存在目标存储数据时,将目标存储数据存入内存中的步骤,包括:检测目标存储数据的类型;当目标存储数据为系统数据时,将目标存储数据存储至静态存储区;当目标存储数据为非系统数据时,将目标存储数据存储至管道栈区。
具体的,在本实施例中,系统数据包括但不限于全局变量、静态变量等,而非系统数据则包括但不限于函数调用信息、局部变量以及参数等。在目标存储数据存入内存之前,还需要对目标存储数据的类型进行检测,当目标存储数据为系统数据时,将目标存储数据存入内存的静态存储区,当目标存储数据为非系统数据时,将目标存储数据存入管道栈区。
步骤130、当运行目标存储数据时,将目标存储数据从内存的管道栈区中进行读取。
具体的,本实施例中,管道栈为一种单口进、双口出的新型栈结构,当运行目标存储数据时,将目标存储数据从管道栈的入口和出口处同时进行读取。
在本实施例一种可选的实施方式中,将目标存储数据存储至管道栈区的步骤,包括:将目标存储数据从管道入口存储至管道栈区;当运行目标存储数据时,将目标存储数据从内存的管道栈区中进行读取的步骤,包括:当运行目标存储数据时,将目标存储数据从管道出口和管道入口同时进行读取。
具体的,传统的栈按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据,而管道栈包括管道出口和管道入口,即在栈底同样存在存在一个出口,当目标存储数据为非系统数据时,目标存储数据会从管道栈的入口,当需要运行目标存储数据时,将目标存储数据从管道栈的入口和出口同时进行读取,相比于传统栈模式只能从入口处逐一提取数据,管道栈读取目标存储数据的效率明显提升了一倍。
在一种可选的实施方式中,管道栈的出口为头部(head节点),入口为尾部(tail节点),在管道栈中存入一个数据时,尾部节点为tail+1,当读取数据数据时,头部和尾部同时弹出数据,数据弹出后的头部表示为head+1,尾部表示为tail-1,当head+1=tail-1时,表示管道栈中只剩余一个数据;当head=tail时,表示管道栈中的数据为空。
可选的,全局变量或者静态变量的内存地址固定,读写效率高,但是在程序运行时,根据需要到内存中相应的存储区中调用,如果一个变量在程序中频繁使用,那么系统就必须多次访问内存中的该存储区,影响程序的执行效率。因此,为了避免频繁使用全局变量或静态变量,当系统运行全局变量时,生成一个目标临时变量,然后将全局变量或静态变量的值赋给目标临时变量,再对目标临时变量进行读取,数据全部读取完成之后,再将目标临时变量的值赋回全局变量或静态变量。
步骤140、当目标存储数据运行完成之后,将目标存储数据从管道栈区中释放。
可选的,当内存出存储空间富余时,内存能够读取更多的运行数据,而当存储空间紧张时,内存每次读取的运行数据相应偏少,严重影响了系统的运行效率。因此,当内存剩余空间过低时因当主动释放内存,在本实施例中,根据目标存储数据的执行频率和数据价值计算目标存储数据的权重,并根据权重对目标存储数据进行排序,当内存剩余空间低于预设存储阈值(根据系统内存的容量决定)时,根据权重排序由低到高释放权重低于预设权重阈值的第一目标存储数据,当内存剩余空间高于预设存储阈值时,根据权重排序由高到低优先存储权重不低于预设权重阈值的第二目标存储数据。
可选的,当内存剩余空间低于预设存储阈值时,检测嵌入式产品中是否存在外部存储器,当该嵌入式产品存在外部存储器时,在外部存储器的存储空间内划分出预设容量的虚拟缓存,此时生成一个跳转函数(可以跳转目标存储数据的存储地址),当检测到存在第三目标存储数据时,无需将第三存储数据存入到内存中,而是通过跳转函数将第三存储数据存储至虚拟缓存中。当系统需要运行第三存储数据时,直接在虚拟缓存中对第三存储数据进行读取,以减少内存的存储压力。
基于上述申请的实施例方案,检测待存储数据中是否存在目标存储数据;当存在目标存储数据时,将目标存储数据存入内存中;当运行目标存储数据时,将目标存储数据从内存的管道栈区中进行读取;其中管道栈为一种单口进、双口出的新型数据结构;当目标存储数据运行完成之后,将目标存储数据从管道栈区中释放。通过本申请方案的实施,将待存储数据中的目标存储数据存入内存中,内存中设置有管道栈区,管道栈是一种新型数据结构,存入数据时数据从管道栈的一边端口进栈,读取数据时数据可从两边端口同时出栈,数据全部出栈之后将目标存储数据从管道栈区中释放,能够有效提高内存的读取效率,进而提高产品的使用效率。
图2为本申请实施例提供的一种内存优化装置,该内存优化装置可用于实现前述实施例中的内存优化方法。如图2所示,该内存优化装置主要包括:
检测模块10,用于检测待存储数据中是否存在目标存储数据;
存储模块20,用于当存在目标存储数据时,将目标存储数据存入内存中;
读取模块30,用于当运行目标存储数据时,将目标存储数据从内存的管道栈区中进行读取;其中,管道栈为一种单口进、双口出的新型数据结构;
释放模块40,用于当目标存储数据运行完成之后,将目标存储数据从管道栈区中释放。
在本实施例一种可选的实施方式中,检测模块具体用于:获取待存储数据;根据最小数据分割算法将待存储数据分割成N个数据;其中,N为大于或等于2的整数;检测N个数据中是否存在待运行的目标存储数据。
在本实施例一种可选的实施方式中,存储模块用于:检测目标存储数据的类型;当目标存储数据为系统数据时,将目标存储数据存储至静态存储区;当目标存储数据为非系统数据时,将目标存储数据存储至管道栈区。
进一步的,在本实施例一种可选的实施方式中,该内存优化装置还包括:生成模块、赋值模块。生成模块用于:当运行系统数据时,生成目标临时变量。赋值模块用于:将系统数据的全局变量赋值给目标临时变量;对目标临时变量进行读取之后,将目标临时变量的值赋回全局变量。
进一步的,在本实施例另一种可选的实施方式中,存储模块还具体用于:将目标存储数据从管道入口存储至管道栈区;读取模块具体用于:当运行目标存储数据时,将目标存储数据从管道出口和管道入口同时进行读取。
在本实施例一种可选的实施方式中,该内存优化装置还包括:确定模块。确定模块用于:根据目标存储数据的执行频率和数据价值确定目标存储数据的权重。释放模块用于:当内存剩余空间低于预设存储阈值时,释放权重低于预设权重阈值的第一目标存储数据。存储模块用于:当内存剩余空间高于预设存储阈值时,优先存储权重不低于预设权重阈值的第二目标存储数据。
进一步的,在本实施例一种可选的实施方式中,该内存优化装置还包括:划分模块。检测模块还用于:检测嵌入式产品中是否存在外部存储器。划分模块用于:当存在外部存储器时,在外部存储器中划分出预设容量的虚拟缓存。存储模块还用于:当检测到第三目标存储数据时,将第三目标存储数据存储至虚拟缓存中。
根据本申请方案所提供的内存优化装置,检测待存储数据中是否存在目标存储数据;当存在目标存储数据时,将目标存储数据存入内存中;当运行目标存储数据时,将目标存储数据从内存的管道栈区中进行读取;其中管道栈为一种单口进、双口出的新型数据结构;当目标存储数据运行完成之后,将目标存储数据从管道栈区中释放。通过本申请方案的实施,将待存储数据中的目标存储数据存入内存中,内存中设置有管道栈区,管道栈是一种新型数据结构,存入数据时数据从管道栈的一边端口进栈,读取数据时数据可从两边端口同时出栈,数据全部出栈之后将目标存储数据从管道栈区中释放,能够有效提高内存的读取效率,进而提高产品的使用效率。
图3为本申请实施例提供的一种电子设备。该电子设备可用于实现前述实施例中的内存优化方法,主要包括:
存储器301、处理器302及存储在存储器301上并可在处理器302上运行的计算机程序303,存储器301和处理器302通过通信连接。处理器302执行该计算机程序303时,实现前述实施例中的内存优化方法。其中,处理器的数量可以是一个或多个。
存储器301可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器301用于存储可执行程序代码,处理器302与存储器301耦合。
进一步的,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是设置于上述各实施例中的电子设备中,该计算机可读存储介质可以是前述图3所示实施例中的存储器。
该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的内存优化方法。进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本申请所提供的基于嵌入式产品的内存优化方法及相关装置的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种基于嵌入式产品的内存优化方法,其特征在于,包括:
检测待存储数据中是否存在目标存储数据;
当存在所述目标存储数据时,将所述目标存储数据存入内存中;
当运行所述目标存储数据时,将所述目标存储数据从所述内存的管道栈区中进行读取;其中,所述管道栈为一种单口进、双口出的新型数据结构;
当所述目标存储数据运行完成之后,将所述目标存储数据从所述管道栈区中释放。
2.根据权利要求1所述的内存优化方法,其特征在于,所述检测待存储数据中是否存在目标存储数据的步骤,包括:
获取所述待存储数据;
根据最小数据分割算法将所述待存储数据分割成N个数据;其中,N为大于或等于2的整数;
检测所述N个数据中是否存在待运行的所述目标存储数据。
3.根据权利要求1所述的内存优化方法,其特征在于,所述内存包括静态存储区,所述当存在所述目标存储数据时,将所述目标存储数据存入内存中的步骤,包括:
检测所述目标存储数据的类型;
当所述目标存储数据为系统数据时,将所述目标存储数据存储至所述静态存储区;
当所述目标存储数据为非系统数据时,将所述目标存储数据存储至所述管道栈区。
4.根据权利要求3所述的内存优化方法,其特征在于,所述方法还包括:
当运行所述系统数据时,生成目标临时变量;
将所述系统数据的全局变量赋值给所述目标临时变量;
对所述目标临时变量进行读取之后,将所述目标临时变量的值赋回所述全局变量。
5.根据权利要求3所述的内存优化方法,其特征在于,所述管道栈区包括管道出口和管道入口,所述将所述目标存储数据存储至所述管道栈区的步骤,包括:
将所述目标存储数据从所述管道入口存储至所述所述管道栈区;
所述当运行所述目标存储数据时,将所述目标存储数据从所述内存的管道栈区中进行读取的步骤,包括:
当运行所述目标存储数据时,将所述目标存储数据从所述管道出口和所述管道入口同时进行读取。
6.根据权利要求1所述的内存优化方法,其特征在于,所述方法还包括:
根据所述目标存储数据的执行频率和数据价值确定所述目标存储数据的权重;
当所述内存剩余空间低于预设存储阈值时,释放所述权重低于预设权重阈值的第一目标存储数据;
当所述内存剩余空间高于预设存储阈值时,优先存储所述权重不低于预设权重阈值的第二目标存储数据。
7.根据权利要求6所述的内存优化方法,其特征在于,当所述内存剩余空间低于预设存储阈值时,所述方法还包括:
检测嵌入式产品中是否存在外部存储器;
当存在外部存储器时,在所述外部存储器中划分出预设容量的虚拟缓存;
当检测到第三目标存储数据时,将所述第三目标存储数据存储至所述虚拟缓存中。
8.一种内存优化装置,其特征在于,包括:
检测模块,用于检测待存储数据中是否存在目标存储数据;
存储模块,用于当存在所述目标存储数据时,将所述目标存储数据存入内存中;
读取模块,用于当运行所述目标存储数据时,将所述目标存储数据从所述内存的管道栈区中进行读取;其中,所述管道栈为一种单口进、双口出的新型数据结构;
释放模块,用于当所述目标存储数据运行完成之后,将所述目标存储数据从所述管道栈区中释放。
9.一种电子设备,其特征在于,包括存储器及处理器,其中:
所述处理器用于执行存储在所述存储器上的计算机程序;
所述处理器执行所述计算机程序时,实现权利要求1至7中任意一项所述内存优化方法中的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中的任意一项所述内存优化方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311039810.3A CN117076116A (zh) | 2023-08-17 | 2023-08-17 | 一种基于嵌入式产品的内存优化方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311039810.3A CN117076116A (zh) | 2023-08-17 | 2023-08-17 | 一种基于嵌入式产品的内存优化方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117076116A true CN117076116A (zh) | 2023-11-17 |
Family
ID=88710976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311039810.3A Pending CN117076116A (zh) | 2023-08-17 | 2023-08-17 | 一种基于嵌入式产品的内存优化方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076116A (zh) |
-
2023
- 2023-08-17 CN CN202311039810.3A patent/CN117076116A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11385793B2 (en) | Methods and apparatus to manage workload memory allocation | |
US9413683B2 (en) | Managing resources in a distributed system using dynamic clusters | |
JP3938387B2 (ja) | コンパイラ、制御方法、およびコンパイラ・プログラム | |
US11449355B2 (en) | Non-volatile memory (NVM) based method for performance acceleration of containers | |
KR102236419B1 (ko) | 액세스 요청을 관리하기 위한 방법, 장치, 기기 및 저장 매체 | |
US8453132B2 (en) | System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems | |
US20110246974A1 (en) | Dynamic compiler program, dynamic compiling method and dynamic compiling device | |
CN102667714B (zh) | 支持访问由操作系统环境外的资源提供的功能的方法和系统 | |
US8756603B2 (en) | Virtual machine stage detection | |
US8966212B2 (en) | Memory management method, computer system and computer readable medium | |
CN117076116A (zh) | 一种基于嵌入式产品的内存优化方法及相关装置 | |
CN113641470A (zh) | 基于gpu的线程排布方法、装置、设备以及存储介质 | |
CN118312102A (zh) | Io请求处理方法、装置、存储设备及存储介质 | |
CN117751344A (zh) | 一种指令调度方法及装置 | |
Li | Basic structure of computers | |
CN116701068A (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 |