开发日志【4】程序运行后内存占用持续增加,最终崩溃退出

这篇博客讨论了程序在重复刷新数据时内存占用不断增长,导致最终崩溃的情况。作者通过分析发现定时器是问题源头,并提出使用SetProcessWorkingSetSize函数将物理内存数据转移至虚拟内存,有效缓解了内存快速增加的问题。在定时器函数末尾调用该函数后,程序内存占用显著改善。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发日志【4】程序运行后内存占用持续增加,最终崩溃退出:

用定时器重复执行刷新数据,不做存储,程序运行后内存占用持续增加,最终崩溃退出。

原因分析:

通过分析,发现是定时器函数持续刷新数据所致。


解决方案:

通过查找,发现采用SetProcessWorkingSetSize()函数,可以将物理内存数据转移到虚拟内存中,虽然不能从根本上解决数据增加的问题,但可以很快捷地解决物理内存占用过快增加的问题。通过在定时器函数中添加SetProcessWorkingSetSize()函数,程序占用内存改善明显。具体方法:

'先声明函数,注意32位和64位需要修改integer和long类型。
Public Declare Function SetProcessWorkingSetSize Lib “kernel32” Alias “SetProcessWorkingSetSize” (ByVal hProcess As Integer, ByVal dwMinimumWorkingSetSize As Integer, ByVal dwMaximumWorkingSetSize As Integer) As Integer
‘在TimerUpdateTime_Tick()函数的尾部添加调用
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess.Handle, -1, -1)

内存占用着增加的问题改善明显。

参考:
https://blog.csdn.net/zougangx/article/details/5939099?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-5939099-blog-18844453.pc_relevant_antiscanv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-5939099-blog-18844453.pc_relevant_antiscanv3&utm_relevant_index=2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值