Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-138694

Memory increase when layer.enable = true, visible = false, model of Repeater changes

XMLWordPrintable

    • All

      During test with the attached source codes, measuring memory usage using heaptrack, memory leak is suspected.
      When Layer.enable is set to true, and visible is set to false, model of Repeater changes condition.
      (start with true and after some times (e.g 5sec) changed it to false will be same).

      It was observed that memory usage increased in a functions in our environment.

      1. QSGBatcherRender::Allocator<QSGBatcherRenderer::Element, 64>::allocate()
        1. layer.enabled = true
        2. visible = true
        3. model of Repeater changes
        4. Timer 5sec changed visible from true to false.

      There were similar results was observed from version 6.2.2 to 6.9.1.

      Below screenshot could find attached heaptrack result file (zst extention)

      expected result: stable memory usage.

      actual result: memory usage increases.
       

      // Main.qml
      
      import QtQuick
      
      Window {
          id: rootWindow
          visible: true
          width: 400
          height: 400
      
          // Timer {
          //     interval : 5000
          //     running: true
          //     repeat: false
          //     onTriggered: {
          //         case1Area.visible = false
          //     }
          // }
      
          Rectangle {
              id: case1Area
              anchors.centerIn: parent
              width: 350
              height: 350
              color: "lightgray"
              layer.enabled: true
              visible: false
      
              ListModel {
                  id: gforceModel
              }
      
              Timer {
                  interval: 20
                  running: true
                  repeat: true
                  onTriggered: {
                      gforceModel.append({
                          x: Math.random() * (case1Area.width - 20),
                          y: Math.random() * (case1Area.height - 20)
                      })
                      if (gforceModel.count > 2) {
                          gforceModel.remove(0)
                      }
                  }
              }
      
              Repeater {
                  model: gforceModel
                  delegate: Image {
                      width: 20
                      height: 20
                      source: "image_0001.jpg"
                      x: model.x
                      y: model.y
                  }
              }
          }
      }
      

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            qt.team.graphics.and.multimedia Qt Graphics Team
            jae-jin Jae-jin Lee
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes