c# windowform 开发的。
占用物理内存到不大,但是 虚拟内存 占用 过大,虚拟内存使用到 1G 多的时候程序就卡死 以及 报 “Out of memory“” 。
问一下,通过什么方法解决?
要么 通过什么方法 释放虚拟内存呢?
占用物理内存到不大,但是 虚拟内存 占用 过大,虚拟内存使用到 1G 多的时候程序就卡死 以及 报 “Out of memory“” 。
问一下,通过什么方法解决?
要么 通过什么方法 释放虚拟内存呢?
解决方案
5
考虑怎么样释放内存,而不是怎么样释放虚拟内存
5
这是你的windows系统设置的问题。贴出你的电脑的分页文件大小设置,截个屏来看看!
5
虚拟内存。不就是为了弥补物理内存的不足从磁盘划分一块保存页面文件麽。C#不是号称托管内存的麽。内存换页是操作系统级的吧。
合理使用和释放内存/加大内存
合理使用和释放内存/加大内存
5
必要时可以手动释放内存。
GC.Collect()
5
建议从程序本身找找问题, 一般这种问题在程序长时间运行,申请的内存得不到释放导致的。
特别是关于数据库连接, 流对象的使用等,用完后没能及时释放,导致内存不断攀升。
特别是关于数据库连接, 流对象的使用等,用完后没能及时释放,导致内存不断攀升。
5
同意
10
及时释放不用的资源
35
按照本人的理解
虚拟内存就是所谓的交换区,操作系统会将物理内存中暂时不活动的内存块转移到硬盘上的交换区,以腾出更多的物理内存供活动进程使用
通常程序在申请内存时,都是申请一段连续的内存空间。假如物理内存不够时,就可能被申请到了交换区(虚拟内存)
所以,你可以考虑适当减少单个容器的数据规模,而代之以多个容器
虚拟内存就是所谓的交换区,操作系统会将物理内存中暂时不活动的内存块转移到硬盘上的交换区,以腾出更多的物理内存供活动进程使用
通常程序在申请内存时,都是申请一段连续的内存空间。假如物理内存不够时,就可能被申请到了交换区(虚拟内存)
所以,你可以考虑适当减少单个容器的数据规模,而代之以多个容器
20
是这个意思
不过当发生交换时,最小的计量单位是页
操作系统不同,内存 页 的大小也不同
不过当发生交换时,最小的计量单位是页
操作系统不同,内存 页 的大小也不同
5
程序应该写得有问题,导致内存无法释放
使用工具软件,查看是什么对象占用内存
使用工具软件,查看是什么对象占用内存