我有一个长时间运行的进程,它也使用大量内存并频繁分配和释放内存。
常驻内存大小(top 命令上的 RES)在 15~20 GB 之间。然而,虚拟内存大小(VIRT on top 命令)不断从 10~20 GB 增加到超过 100 GB。
程序没有崩溃,但我想知道(1)为什么VIRT大小会增加? (2) 是否会导致程序出现问题?
答案1
(1)为什么VIRT大小会增加?
这可能是由于内存碎片和/或内存泄漏,即某些内存区域可能永远不会被释放。
(2) 是否会导致程序出现问题?
如果增加永远不会停止,虚拟内存最终可能会耗尽,导致程序崩溃。如果您使用不会过度使用内存的操作系统,这种情况会发生得更快。