我对不同的程序使用不同的方法来控制它们的资源管理。当我将systemd-run用于gimp(GNU图像处理程序)时,当图片的内存要求高于限制(即我设置的300MB)时,程序崩溃并关闭。是否有任何systemd-run方法既可以安全地使用它而不会崩溃并将其内存限制在限制范围内?
我使用以下命令在其快捷方式(即其桌面文件)中使用 systemd-run 启动它:
systemd-run --scope -p MemoryLimit=300M gimp-2.8 %U
我对不同的程序使用不同的方法来控制它们的资源管理。当我将systemd-run用于gimp(GNU图像处理程序)时,当图片的内存要求高于限制(即我设置的300MB)时,程序崩溃并关闭。是否有任何systemd-run方法既可以安全地使用它而不会崩溃并将其内存限制在限制范围内?
我使用以下命令在其快捷方式(即其桌面文件)中使用 systemd-run 启动它:
systemd-run --scope -p MemoryLimit=300M gimp-2.8 %U
一个程序,例如 gimp,被编译,它的所有行为都是预设的。如果它无法为自己分配内存,那么它将无法运行任何任务。每当程序尝试访问它无法访问的内存时,它必须退出(出现分段错误),因为程序希望拥有该内存来运行,例如在 gimp 的情况下,以存储图像。
当然,可以用更少的内存来存储该图像,但这不在 gimp 的代码中,并且仅仅拒绝 gimp 访问内存不会提高效率。
如果您遇到内存不足的问题,一个很好的解决方案是交换文件。这不会限制您的程序对内存的访问,这会破坏它,而是将未使用的内存存储到磁盘(而不是在 RAM 上),并在需要使用时将其从磁盘中拉回。