linux - 捕获“MemoryError”后如何继续消耗内存
问题描述
我正在开发一个压力测试工具。其目的是消耗所有空闲内存。我的问题是不断地吃掉所有空闲内存,即使在脚本执行期间释放了一些空闲内存,尤其是在 MemoryError 被捕获之后。
我尝试使用 pass 或 continue 语句来处理“MemoryError”异常,但这无济于事。如果发生 MemoryError,脚本不会消耗新释放的内存。可能是由于某些操作系统限制而发生的。
def mem_cons(x):
timestamp()
a = []
idx = 0
appender = a.append
MEGA_STR = 'F' * (10 ** 4 * x)
try:
while True:
try:
idx += 1
if idx > 10000:
if 'kill' in flag:
print("")
timestamp()
print("Memory consumption was remotely stopped.\nPlease use \'ctrl+c\' command to exit")
a = []
timestamp()
print("Memory was cleared")
break
idx = 0
appender(MEGA_STR)
except MemoryError:
continue
timestamp()
except KeyboardInterrupt:
print("")
timestamp()
print("Program has been stopped")
设想:
- 脚本从 20% 消耗到 100% 的内存
- MemoryException 被捕获
- 一些内存是手动释放的,比如说 - 5.1%
实际结果:
在那之后,整个内存消耗水平仍然在 94.9% 并且没有增长(正如我们在图表中看到的- 在红线之后)
预期结果:
脚本继续消耗手动释放的内存,并在 MemoryException 被捕获后将其级别保持在 100%。
提前致谢!
解决方案
推荐阅读
- cassandra - Cassandra 中的默认一致性级别和仲裁设置以及调整它们的最佳实践是什么
- php - Codeigniter 问题,JSON 数据类型数组是否被读取为一个?
- excel - 为 Excel 下拉列表中的单元格分配默认值,并应接受任何其他值
- python - KMeans 算法如何绘制点?
- java - 如何在java中从日期时间获取日期
- python - 返回数组中 1 的索引
- php - laravel 仅“有时”禁止错误 403
- highcharts - Highcharts allowDecimals 条件
- javascript - 作为 prop 传递的函数在子组件中未定义,但在 props 对象中可见
- c - 多线程斐波那契对程序