私は大きいモデルのListView
とデリゲートのCanvas
を持っています。スクロールすると、新しい代理人が作成され、期待どおりに削除されますが、RAMは解放されません。ある時点で、iOSによってアプリケーションが殺されます。 どちらもQPixmapCache::clear()
でもQJSEngine::collectGarbage()
でもQQmlEngine::trimComponentCache()
でもありません。記憶を解放する方法はありますか?QMLキャンバスクリア画像キャッシュ
ここには最小の例があります(qmlsceneで実行できます)。上下にスクロールし、RAMの消費量がアップ
import QtQuick 2.6
ListView {
width: 320
height: 480
model: 1000
delegate: Canvas {
id: canvas
width: parent.width
height: width
onPaint: {
var ctx = getContext("2d")
ctx.strokeStyle = "red"
ctx.lineWidth = 2
ctx.beginPath()
for (var i = 1; i < 20; ++i) {
ctx.lineTo(Math.random() * canvas.width, Math.random() * canvas.height);
}
ctx.stroke();
}
}
}
代理人のコード例を投稿してもらえますか? –
qtquickはメモリ不足です。メモリが制限されていて、アプリケーションが大量のデータを読み込んだ場合、それは貧しい選択です。 – dtech
@AdrienLeravatは最小の例を追加しました – psyched