news 2026/7/24 14:43:49

Windows虚拟内存不足

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows虚拟内存不足

检查能分配的最大内存

import numpy as np import psutil import sys import time import gc def get_system_memory_info(): """获取系统内存信息""" mem = psutil.virtual_memory() swap = psutil.swap_memory() print("\n=== 系统内存状态 ===") print(f"物理内存总量: {mem.total / (1024**3):.2f} GB") print(f"可用物理内存: {mem.available / (1024**3):.2f} GB") print(f"内存使用率: {mem.percent}%") print(f"\n页面文件总量: {swap.total / (1024**3):.2f} GB") print(f"页面文件可用: {swap.free / (1024**3):.2f} GB") def test_max_contiguous_allocation(): """测试最大连续内存分配能力""" print("\n=== 最大连续内存测试 ===") # 测试不同大小的内存分配 test_sizes = [1, 2, 4, 8, 12, 16, 20, 24, 28, 32] # GB max_successful = 0 for size_gb in test_sizes: try: # 计算需要分配的元素数量 (float32占4字节) elements = int(size_gb * 1024**3 / 4) # 测试分配 print(f"尝试分配 {size_gb:2d} GB... ", end="", flush=True) start_time = time.time() test_array = np.zeros(elements, dtype=np.float32) end_time = time.time() # 验证分配大小 allocated_gb = test_array.nbytes / (1024**3) print(f"✓ 成功分配 {allocated_gb:.2f} GB (耗时: {end_time-start_time:.3f}秒)") # 验证数据可访问 test_array[0] = 1.0 test_array[-1] = 1.0 max_successful = size_gb del test_array gc.collect() except MemoryError: print(f"✗ 分配失败") break print(f"\n最大可分配连续内存: {max_successful} GB") def memory_fragmentation_test(): """内存碎片化测试""" print("\n=== 内存碎片化测试 ===") # 创建多个小内存块模拟碎片 fragments = [] chunk_size_gb = 0.5 # 每个块0.5GB chunk_elements = int(chunk_size_gb * 1024**3 / 4) print(f"创建多个 {chunk_size_gb} GB 的小内存块...") for i in range(20): try: frag = np.zeros(chunk_elements, dtype=np.float32) fragments.append(frag) total_allocated = len(fragments) * chunk_size_gb print(f"已分配 {len(fragments)} 个块,总计: {total_allocated:.1f} GB") except MemoryError: print(f"无法继续分配 (已分配: {len(fragments)} 个块)") break # 测试碎片化后的大内存分配 test_size = 12 # GB print(f"\n碎片化后尝试分配 {test_size} GB...") try: elements = int(test_size * 1024**3 / 4) large_array = np.zeros(elements, dtype=np.float32) print(f"✓ 成功分配 {test_size} GB 连续内存") del large_array except MemoryError: print(f"✗ 无法分配 {test_size} GB (内存碎片化)") # 清理碎片 print("\n清理内存碎片...") for frag in fragments: del frag gc.collect() print("清理完成") if __name__ == "__main__": print("=== 内存容量测试工具 ===") print(f"Python位数: {'64位' if sys.maxsize > 2**32 else '32位'}") print(f"NumPy版本: {np.__version__}") get_system_memory_info() test_max_contiguous_allocation() memory_fragmentation_test() input("\n测试完成,按回车键退出...")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 4:15:43

探索Green–Ampt入渗模型与Richards非饱和渗流

Green–Ampt入渗模型与Richards非饱和渗流,适用于各类型的均质土体入渗,包括且不限于边坡降雨入渗等 [1]模型简介:使用数值模拟软件COMSOL,以Lima试验分析使用Green-Ampt入渗模型的入渗率变化、最大入渗能力变化及土壤不同深度的压…

作者头像 李华
网站建设 2026/7/24 7:44:01

记忆力:解锁学业成就的核心引擎

我们正经历一场学习革命。当知识总量爆炸式增长,决定胜负的不再是投入时间的长度,而是记忆力的强度。记忆力,这项曾被视为“死记硬背”的底层能力,已成为连接高效学习与卓越成绩的隐形桥梁。真正的记忆力,是信息的智能…

作者头像 李华
网站建设 2026/7/20 21:07:28

人群仿真软件:AnyLogic_(6).行为规则设定

行为规则设定 在AnyLogic中,行为规则设定是人群仿真模型的核心部分。通过设定行为规则,可以模拟不同场景下人群的行为模式,从而更准确地预测和分析人群流动情况。本节将详细介绍如何在AnyLogic中设定行为规则,包括个体行为、群体行…

作者头像 李华