我刚看到机器上发生了MemoryError
,我注意到服务器上的可用缓存在此之后急剧增加。当错误被抛出时,Python是否有某种方式触发内存管理任务?或者这可能由服务器(Linux / CentOs)管理?
答案 0 :(得分:1)
MemoryError
并未特别以导致此情况发生的方式处理,并且没有其他例外,但是:
MemoryError
继承自BaseException
,而不是Exception
,因此不太可能被" generic" except Exception:
块,意味着更多堆栈层被解开并最终被释放所有这些都增加了释放内存的几率,但没有一个特定于MemoryError
;如果您点击Ctrl-C
并触发KeyboardInterrupt
,则可以观察到相同的行为。更有可能的是,您正在看到Python退出,或者Linux正在通过转储其缓存来响应极端内存请求;在转储缓存后,MemoryError
将来以试图满足大内存请求,特别是如果请求是针对内存块的多个连续请求而不是单个巨大请求。