1

QML 要素を使用する単純な Qt アプリケーションがあります。アプリケーションを起動すると、約 40Mb かかります。現在、単一ページのオブジェクトを動的に作成しています。

例。

var component = Qt.createComponent("AboutUs.qml");
 var object = component.createObject(mainPage);

object.destroy() を使用してページを閉じると、それらを破棄します

アプリケーションの動作は奇妙です。作成された単純なオブジェクトは常に約1Mbかかりますが、オブジェクトを削除すると、それらのメモリは解放されません。

現在、私のアプリケーションにはこの種のページが 20 個あります。したがって、各ページを 1 回開くと、アプリケーションが占有する合計メモリは約 60Mb になり、メモリ リークのようになります。

なぜそれが起こっているのかを見つけることができません.javascriptengineがメモリを占有して解放していないのか、メモリを解放していないのはJavaスクリプトのローカル変数なのか、オブジェクトを作成するためにキャッシュしているQT4なのか.

4

1 に答える 1

0

Qtのサイトを引用:

destroy() メソッドを使用してアイテムを削除できます。このメソッドには、オブジェクトが破棄されるまでのおおよその遅延をミリ秒単位で指定するオプションの引数 (デフォルトは 0) があります。

オブジェクトは destroy() が呼び出された瞬間に破棄されませんが、そのスクリプト ブロックの終了から次のフレームまでの間にクリーンアップされます (ゼロ以外の遅延を指定しない限り)。

destroy()オブジェクトをすぐに削除するには、パラメーターを指定して呼び出す必要があります。

于 2013-10-28T19:57:22.720 に答える