Indeed it works !
I did 2 mistakes, I forgot ".item" after currentItem and I didn't changed currentIndex when I switch between pages because I use positionViewAtIndex. But positionViewAtIndex don't change currentIndex of the listView.
On QT part, we followed a lot of techniques mentioned in that post. Using Loaders for lazy loading, optimizing images, using qtquickcompiler. The major challenge is on the OS boot time that we are working on.
Just by loading one page and coming back, we can't make out the memory leak. Try multiple times like this. If you see a increase & no decrease then we can conclude memory leak. If you can send me the complete example, we can try as well.
I appreciate your response, it lead me to a lot of research on the topic! I figured out it was much easier to implement a tabview on the main view and then to connect the signals with the child objects which were themselves individual views.
@kylecorver Can you post the complete program? The original isn't a a valid Qml document, leading to guessing about which errors will or will not occur. The OS and Qt version used might also be relevant.
I know this is marked as solved, but just as an aside: to do this with a Loader, you could use a Settings object to store the properties that should be reset to restore the state of the user's view - still a Labs feature just now, but it works very nicely.