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

Reduce memory usage in QDeclarativeEnginePrivate class by setting a smaller increment for QPODVector

    XMLWordPrintable

Details

    • 9fd34288efdbb5c77d002408dd83bccbd654292f

    Description

      Memory usage can be reduced in QDeclarativeEnginePrivate class by setting a smaller value for the increment in QPODVector used for capturedProperties.

      When running Valgrind, the following can be seen in a QML application. The increment in QPODVector of CapturedProperty is set to the default size of 1024:

      ==3137== 9,112 bytes in 103 blocks are possibly lost in loss record 9,700 of 9,788
      ==3137== at 0x483535C: operator new[](unsigned int) (vg_replace_malloc.c:299)
      ==3137== by 0x49FC39B: QDeclarativeQtScriptExpression::updateGuards(QPODVector<QDeclarativeEnginePrivate::CapturedProperty, 1024> const&) (qdeclarativeexpression.cpp:551)
      ==3137== by 0x49FD427: QDeclarativeQtScriptExpression::scriptValue(QObject*, bool*) (qdeclarativeexpression.cpp:479)
      ==3137== by 0x49FD65B: QDeclarativeExpressionPrivate::scriptValue(QObject*, bool*) (qdeclarativeexpression.cpp:653)
      ==3137== by 0x49FE463: QDeclarativeBinding::update(QFlags<QDeclarativePropertyPrivate::WriteFlag>) (qdeclarativebinding.cpp:364)
      ==3137== by 0x49FDE47: QDeclarativeBinding::setEnabled(bool, QFlags<QDeclarativePropertyPrivate::WriteFlag>) (qdeclarativebinding.cpp:473)
      ==3137== by 0x4A06D4B: QDeclarativeComponentPrivate::complete(QDeclarativeEnginePrivate*, QDeclarativeComponentPrivate::ConstructionState*) (qdeclarativecomponent.cpp:948)
      ==3137== by 0x4A0753B: QDeclarativeComponentPrivate::completeCreate() (qdeclarativecomponent.cpp:1035)
      ==3137== by 0x4A0637B: QDeclarativeComponent::create(QDeclarativeContext*) (qdeclarativecomponent.cpp:768)
      ==3137== by 0x48C68F3: QDeclarativeView::continueExecute() (qdeclarativeview.cpp:547)

      Currently the default value of 1024 is used for QPODVector in capturedProperties:
      http://qt.gitorious.org/qt/qt/blobs/4.7-stable/src/declarative/qml/qdeclarativeengine_p.h#line161

      QPODVector<CapturedProperty> capturedProperties;

      A smaller value could be defined for capturedProperties to reduce memory usage:
      QPODVector<CapturedProperty,20> capturedProperties;

      Attachments

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

        Activity

          People

            glwatson Glenn Watson
            mekajava Merja Kajava
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes