System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及计算机内存管理领域,特别是涉及一种有效解决32位程序进程空间可用内存不足的方法。
技术介绍
1、在microsoftwindows操作系统中,由于32位进程虚拟地址空间的限制(通常用户模式地址空间为2gb或更少),当32位程序需要处理大量数据或执行复杂任务时,可能会遇到可用内存不足的问题。当32位应用主程序进程空间出现可用内存不足(简称内存不足)的情况时,对进程本身及操作系统均会产生较大的负面影响,可能导致出现多种问题,包括但不限于:
2、1、程序运行缓慢:当内存不足时,操作系统就会不断地将数据从内存中转移到硬盘上的虚拟内存中,以此来腾出空间。这种频繁的数据交换会导致程序的运行速度明显下降,因为硬盘的读写速度远远慢于内存。2、程序数据丢失:因为内存不足导致部分数据未能正确写入内存而丢失,影响程序执行的结果。3、程序崩溃:内存不足导致无法正常运行程序,程序可能会崩溃并发生异常退出,影响程序的稳定性和可靠性。4、系统页面错误:内存不足时,操作系统会频繁地进行页面交换,这可能导致页面错误(page faults)的增加,也会影响程序的运行效率。5、系统负载增加:当内存不足时,系统需要不断地进行内存管理和调度,这会增加系统负载,降低系统的响应速度和稳定性。6、系统崩溃或死机:正在运行的应用主程序可能会突然停止工作,或者系统完全冻结。这不仅会影响正在进行的工作,还可能导致用户数据丢失或损坏。
3、这些问题都会直接影响到用户的使用体验和工作效率,因此对于内存占用较大的32位程序,优化其内存使用,对于确保
技术实现思路
1、为了克服现有技术的不足,本专利技术的目的是提供一种有效解决32位程序进程空间可用内存不足的方法,有效突破了操作系统对32位应用程序虚拟地址空间的可用内存限制,能够降低内存占用,为用户提供一个功能完整可操作且人机交互界面完整连续统一的应用程序组,大大优化了用户体验。
2、为实现上述目的,本专利技术提供了如下方案:一种有效解决32位程序进程空间可用内存不足的方法,包括以下步骤:
3、获取应用主程序,对所述应用主程序的源代码进行分析,得到所述应用主程序中对内存有需求的功能模块,再根据内存需求对所述功能模块进行拆分,得到多个子功能模块和所述子功能模块的子程序;
4、根据不同的所述子功能模块开发与所述子功能模块相适配的新程序,并在所述子功能模块的子程序中加入自定义消息处理功能,统一所述子功能模块的调度接口,完成所述子功能模块的程序封装;
5、创建共享内存区域,并在所述共享内存区域内,利用窗口api函数,将所述应用主程序和所述子程序的窗口融合,完成外观融合,得到统一界面;
6、利用窗口api函数,进行窗口之间的数据交互和程序功能调度,完成窗口消息的跨进程通讯;
7、引入套接字技术进行应用主程序、子程序和新程序之间的网络通信。
8、可选的,获取应用主程序,对所述应用主程序的源代码进行分析,得到所述应用主程序中对内存有需求的功能模块,再根据内存需求对所述功能模块进行拆分,得到多个子功能模块和所述子功能模块的子程序,包括:
9、获取应用主程序,对所述应用主程序的源代码进行分析,得到所述应用主程序中对内存有需求的功能模块;
10、以1gb-1.4gb内存需求量为标准,对所述功能模块进行拆分,得到多个子功能模块和所述子功能模块的子程序;
11、对所有所述子功能模块进行分析,判断是否存在超过2gb内存需求的子功能模块,若判断结果为是,则将超过2gb内存需求的子功能模块拆分为多个低需求功能模块。
12、可选的,根据不同的所述子功能模块开发与所述子功能模块相适配的新程序,并在所述子功能模块的子程序中加入自定义消息处理功能,统一所述子功能模块的调度接口,完成所述子功能模块的程序封装,包括:
13、根据不同的所述子功能模块和所述低需求功能模块,开发新程序;其中,所述新程序的数量为所述子功能模块和所述低需求功能模块之和;
14、根据每个功能的模块的入参和出参,在每个功能模块的子程序中设计调度接口,并对调度接口进行修整,完成子程序调度接口的统一;
15、在每个子程序的主窗口消息循环中引入自定义消息处理功能,以进行跨进程消息驱动功能,完成所有功能模块的封装。
16、可选的,创建共享内存区域,包括:
17、基于所述子功能模块,新建计算机程序,得到新主程序;
18、在所述新主程序中创建空白窗口,并将所述空白窗口设置为所述子程序的父窗口;其中,所述空白窗口的数量与所述子程序中需要显示的子窗口数量相同且一一对应。
19、可选的,利用窗口api函数,将所述应用主程序和所述子程序的窗口融合,完成外观融合,得到统一界面,包括:
20、当所述应用主程序运行时,调用createprocess函数,利用所述应用主程序启动所述新主程序和所述子程序,再调用findwindowex函数找出所有所述子程序的窗口;
21、调用setparent函数,将所述新主程序的空白窗口指定为所述子程序的父窗口;
22、调用setwindowpos函数,调整所述子程序的子窗口在所述父窗口中的显示位置和显示大小,实现所述子窗口和所述父窗口之间的融合和协同运行。
23、可选的,利用窗口api函数,进行窗口之间的数据交互和程序功能调度,并开发用于进行所述子程序之间的共享和交互的融合程序,完成窗口消息的跨进程通讯,包括:
24、在程序的发送进程和接收进程之间定义一个或多个用于区分不同消息类型大的消息标识;所述消息标识为自定义的消息标识;
25、调用findwindowex函数,查找所述接收进程的窗口句柄,根据所述接收进程的窗口句柄,所述发送进程利用sendmessage或postmessage函数将消息发送给所述接收进程;
26、根据自定义的消息类型,利用所述接收窗口重写窗口过程,以执行与自定义消息相对应的操作;
27、所述接收进程使用sendmessage或postmessage函数,将自定义消息的处理结果返回给所述发送进程的目标窗口消息队列中进行处理。
28、本专利技术通过提供一种有效解决32位程序进程空间可用内存不足的方法,公开了以下技术效果:
29、1、彻底解决32位应用程序面临的可用内存限制问题:根据本专利技术的技术方案,对目标32位应用程序进行多进程设计,每个进程都可以具有最大4gb进程空间,通过扩展进程数量的方式,就能彻底解决应用程序可用内存不足的问题。
30、2、降低内存占用:将占用内存较多的32位应用程序拆分为多个子程序后,单个程序所占用的内存将显著降低,这有助于提升程序的整体性能,并减少因内存不足而导致的程序崩溃等问题。并且通过创建共享内存区域,多个进程可以访问同一块本文档来自技高网...
【技术保护点】
1.一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,获取应用主程序,对所述应用主程序的源代码进行分析,得到所述应用主程序中对内存有需求的功能模块,再根据内存需求对所述功能模块进行拆分,得到多个子功能模块和所述子功能模块的子程序,包括:
3.根据权利要求2所述的一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,根据不同的所述子功能模块开发与所述子功能模块相适配的新程序,并在所述子功能模块的子程序中加入自定义消息处理功能,统一所述子功能模块的调度接口,完成所述子功能模块的程序封装,包括:
4.根据权利要求3所述的一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,创建共享内存区域,包括:
5.根据权利要求4所述的一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,利用窗口API函数,将所述应用主程序和所述子程序的窗口融合,完成外观融合,得到统一界面,包括:
6.根据权利要求5所述
...【技术特征摘要】
1.一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,获取应用主程序,对所述应用主程序的源代码进行分析,得到所述应用主程序中对内存有需求的功能模块,再根据内存需求对所述功能模块进行拆分,得到多个子功能模块和所述子功能模块的子程序,包括:
3.根据权利要求2所述的一种有效解决32位程序进程空间可用内存不足的方法,其特征在于,根据不同的所述子功能模块开发与所述子功能模块相适配的新程序,并在所述子功能模块的子程序中加入自定义消息处理功能,...
【专利技术属性】
技术研发人员:林德强,刘春梅,王斌,李志阳,
申请(专利权)人:四川美康医药软件研究开发股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。