I have seen this before in a similar type of app. Don't forget to use QObject::deleteLater() for objects that are created dynamically, and go unneeded after and event (like on socket disconnect).
Also while rare, but very real for long-running C/C++ processes of this nature is a memory fragmentation issue (Java and .Net don't have this as they compact their heaps) where you may end up with objects occupying partial pages, which become sparsely populated over time and expand to consume all availbile memory pages. The only work around in C/C++ is to only use dynamic memory only at start-up, and allocate a fixed number of objects which are re-used. This is what NASA does. You could also take a hybrid approach and allocate blocks of objects at a time, this won't prevent, only delay the inevitable. However if your process can eventually free all objects on the page, then you won't ever run into the problem. It's only if the lifetimes of the objects vary significantly that this happens.
Sent: Friday, October 30, 2015 at 10:08 AM
From: "Etienne Sandré-Chardonnal" <etienne.san...@m4x.org>
To: "interest@qt-project.org" <Interest@qt-project.org>
Subject: [Interest] Memory leak problem in a Qt App
From: "Etienne Sandré-Chardonnal" <etienne.san...@m4x.org>
To: "interest@qt-project.org" <Interest@qt-project.org>
Subject: [Interest] Memory leak problem in a Qt App
Dear all,
I have an app which runs several days executing computation jobs (about one job every few minutes). In some cases, the memory consumption grows to several Gb unexpectedly.Some objects also have no parent (such as the root objects running a QThread event loop) but have signal/slot connections and thus are still referenced somewhere in a table, thus defeating valgrind.
Is there any tool for detecting this? Such as one tracking the QObject tree, or the number of QObject allocated per subclass?
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest