该应用程序是内存泄漏,所以作为临时解决方案,我会检查它需要多少内存,终止进程并重新启动应用程序。
有没有简单的方法呢?
谢谢
答案 0 :(得分:1)
你应该修复内存泄漏。如果要重新启动应用程序,可以使用QProcess::startDetached
在新进程中运行应用程序实例并从中分离。之后你应该退出申请。
这将重新启动您的应用程序:
QProcess process;
process.startDetached("myApp",QStringList());
qApp->quit();
此处myApp
是应用程序的可执行文件的名称。在Windows上,它可以是myApp.exe
。
答案 1 :(得分:0)
您可以覆盖new和delete以保留程序的分配统计信息,然后根据可用的mem,abort()达到阈值时。然后在外部脚本中重启。
另请参阅优秀的gimli显示器,此处:https://bitbucket.org/wez/gimli/wiki/Monitor
答案 2 :(得分:0)
要自行重启应用程序,请尝试:
#include <QApplication>
#include <QProcess>
...
// restart:
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments());