我正在开发压力测试工具。其目的是消耗所有可用内存。我的问题是,即使在脚本执行期间(尤其是在捕获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")
场景:
实际结果:
此后,整个内存消耗水平仍为94.9%,并且没有增长(如红线之后的graph所示)
预期结果:
脚本继续消耗手动释放的内存,并在捕获MemoryException之后将其级别保持在100%。
谢谢!