[Qt-qml] Some memory allocated for every mouse click.

jyrki.yli-nokari at nokia.com jyrki.yli-nokari at nokia.com
Wed Dec 29 13:39:24 CET 2010


Just a layman's guess but isn't this just the result of the allocation of the event data structure when the mouse is clicked?
160 bytes that gets freed later, would you care to elaborate why this is a problem?

From: "ext mikko.kiilholma at nokia.com<mailto:mikko.kiilholma at nokia.com>" <mikko.kiilholma at nokia.com<mailto:mikko.kiilholma at nokia.com>>
Date: Wed, 29 Dec 2010 10:14:26 +0000
To: <aaron.kennedy at nokia.com<mailto:aaron.kennedy at nokia.com>>
Cc: <qt-qml at qt.nokia.com<mailto:qt-qml at qt.nokia.com>>
Subject: Re: [Qt-qml] Some memory allocated for every mouse click.

Thanks for getting interested about this.

I am not seeing any difference with this one:

Rectangle {
    width: 360
    height: 640

    Rectangle {
        anchors.fill: parent
        property int i: 0
        MouseArea {
            anchors.fill: parent
            onPressed : {
                    parent.i = mouse.x
            }
            onPositionChanged:{
                    parent.i = mouse.x
            }
        }
    }
}

- Mikko
________________________________
From: Kennedy Aaron (Nokia-MS-Qt/Brisbane)
Sent: 29.12.2010 11:17
To: Kiilholma Mikko (Nokia-MS/Tampere)
Cc: Kiilholma Mikko (Nokia-MS/Tampere); qt-qml at qt.nokia.com<mailto:qt-qml at qt.nokia.com>
Subject: Re: [Qt-qml] Some memory allocated for every mouse click.

Hi,

As strange as this may sound, can you try inserting another root Rectangle (so that the MouseArea's parent is not the root element) and see if you get the same results?

Cheers,

Aaron

On 29/12/2010, at 6:38 PM, "ext mikko.kiilholma at nokia.com<mailto:mikko.kiilholma at nokia.com>" <mikko.kiilholma at nokia.com<mailto:mikko.kiilholma at nokia.com>> wrote:

It seems that this is how JavaScript and garbage collection works. With this example the memory usage just seems to be quite excessive.

________________________________
From: qt-qml-bounces+mikko.kiilholma=nokia.com at qt.nokia.com<mailto:qt-qml-bounces+mikko.kiilholma=nokia.com at qt.nokia.com> [mailto:qt-qml-bounces+mikko.kiilholma=nokia.com at qt.nokia.com<mailto:nokia.com at qt.nokia.com>] On Behalf Of ext <mailto:mikko.kiilholma at nokia.com> mikko.kiilholma at nokia.com<mailto:mikko.kiilholma at nokia.com>
Sent: 28.12.2010 03:28
To: <mailto:qt-qml at qt.nokia.com> qt-qml at qt.nokia.com<mailto:qt-qml at qt.nokia.com>
Subject: [Qt-qml] Some memory allocated for every mouse click.

Hi,

I would like to know what's the reasoning behind this: The following code causes allocation of 160 bytes every time the window is clicked (the GlowCode call stacks of the allocations below).
I first thought that this is a leak but soon realized that the first allocations are getting deleted later when the window has been clicked for hundreds of times.
Dragging around the empty window causes allocations and deallocations to occur in very high rate.
(My environment is Windows XP, Visual Studio, GlowCode, Qt4.7.1.)

Is this effective memory handling?

import Qt 4.7
import QtQuick 1.0

Rectangle {
    width: 360
    height: 640
    property int i: 0
    MouseArea {
                anchors.fill: parent
                onPressed : {
                        parent.i = mouse.x
                }
                onPositionChanged:{
                        parent.i = mouse.x
                }
        }
}


StackTrace Content
  MSVCR90D!malloc_base+254 bytes 0x4D103E
  MSVCR90D!malloc_dbg+774 bytes 0x4DFD76
  MSVCR90D!malloc_dbg+191 bytes 0x4DFB2F
  MSVCR90D!malloc_dbg+108 bytes 0x4DFADC
  MSVCR90D!malloc+27 bytes 0x4EB25B
  MSVCR90D!operator new+17 bytes 0x4CD691
  QtScriptd4!QScriptDeclarativeClass::newObject file C:\Qt\4.7.1\src\script\bridge\qscriptdeclarativeclass.cpp line 202+7 bytes 0x101E4D81
  QtDeclaratived4!QDeclarativeObjectScriptClass::newQObject file c:\qt\4.7.1\src\declarative\qml\qdeclarativeobjectscriptclass.cpp line 120+109 bytes 0x66199FD2
  QtDeclaratived4!QDeclarativeObjectScriptClass::property file c:\qt\4.7.1\src\declarative\qml\qdeclarativeobjectscriptclass.cpp line 258+35 bytes 0x6619AA67
  QtDeclaratived4!QDeclarativeContextScriptClass::property file c:\qt\4.7.1\src\declarative\qml\qdeclarativecontextscriptclass.cpp line 273+29 bytes 0x660A1D14
  QtScriptd4!QTJSC::JSObject::getPropertySlot file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\jsobject.h line 391+20 bytes 0x100413AC
  QtScriptd4!cti_op_resolve_skip file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\jit\jitstubs.cpp line 2298+20 bytes 0x100C2CE8
  QtScriptd4!QTWTF::RefPtr<QTJSC::UStringImpl>::operator= file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\wtf\refptr.h line 117+0 bytes 0x100375B0
  QtScriptd4!QTJSC::Register::operator= file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\register.h line 118+15 bytes 0x10092C26
  QtScriptd4!QTJSC::ExecState::setCalleeArguments file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\callframe.h line 113+22 bytes 0x10094436
  QtScriptd4!QTJSC::JITCode::execute file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\jit\jitcode.h line 79+36 bytes 0x100945BB
  QtScriptd4!QTJSC::Interpreter::execute file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\interpreter.cpp line 716+49 bytes 0x1008630D
  QtScriptd4!QTJSC::JSFunction::call file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\jsfunction.cpp line 122+78 bytes 0x1010BF05
  QtScriptd4!QTJSC::call file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\calldata.cpp line 62+43 bytes 0x100E5E36
  QtScriptd4!QScriptValue::call file C:\Qt\4.7.1\src\script\api\qscriptvalue.cpp line 1605+59 bytes 0x101C3739
  QtDeclaratived4!QDeclarativeQtScriptExpression::eval file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 479+67 bytes 0x660DE901
  QtDeclaratived4!QDeclarativeQtScriptExpression::scriptValue file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 434+20 bytes 0x660DE6E4
  QtDeclaratived4!QDeclarativeExpressionPrivate::scriptValue file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 614+23 bytes 0x660DF149
  QtDeclaratived4!QDeclarativeExpressionPrivate::value file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 628+31 bytes 0x660DF227
  QtDeclaratived4!QDeclarativeBoundSignal::qt_metacall file c:\qt\4.7.1\src\declarative\qml\qdeclarativeboundsignal.cpp line 177+35 bytes 0x6604CCAF
  QtCored4!QMetaObject::activate file c:\qt\4.7.1\src\corelib\kernel\qobject.cpp line 3465+39 bytes 0x671518CC
  QtDeclaratived4!QDeclarativeMouseArea::pressed file c:\qt\4.7.1\src\declarative\tmp\moc\debug_shared\moc_qdeclarativemousearea_p.cpp line 429+21 bytes 0x662B135B
  QtDeclaratived4!QDeclarativeMouseArea::setPressed file c:\qt\4.7.1\src\declarative\graphicsitems\qdeclarativemousearea.cpp line 845+0 bytes 0x661985F9
  QtDeclaratived4!QDeclarativeMouseArea::mousePressEvent file c:\qt\4.7.1\src\declarative\graphicsitems\qdeclarativemousearea.cpp line 462+13 bytes 0x66196D5E
  gc6prof!0xb22151 0xB22151
  gc6prof!0xb21f1d 0xB21F1D
  gc6prof!MessageOut::OutputLastError+45268 bytes 0xB3C5C4

  StackTrace Content
  MSVCR90D!malloc_base+254 bytes 0x4D103E
  MSVCR90D!malloc_dbg+774 bytes 0x4DFD76
  MSVCR90D!malloc_dbg+191 bytes 0x4DFB2F
  MSVCR90D!malloc_dbg+108 bytes 0x4DFADC
  MSVCR90D!malloc+27 bytes 0x4EB25B
  MSVCR90D!operator new+17 bytes 0x4CD691
  QtDeclaratived4!QDeclarativeObjectScriptClass::newQObject file c:\qt\4.7.1\src\declarative\qml\qdeclarativeobjectscriptclass.cpp line 120+33 bytes 0x66199F86
  QtDeclaratived4!QDeclarativeObjectScriptClass::property file c:\qt\4.7.1\src\declarative\qml\qdeclarativeobjectscriptclass.cpp line 258+35 bytes 0x6619AA67
  QtDeclaratived4!QDeclarativeContextScriptClass::property file c:\qt\4.7.1\src\declarative\qml\qdeclarativecontextscriptclass.cpp line 273+29 bytes 0x660A1D14
  QtScriptd4!QTJSC::JSObject::getPropertySlot file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\jsobject.h line 391+20 bytes 0x100413AC
  QtScriptd4!cti_op_resolve_skip file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\jit\jitstubs.cpp line 2298+20 bytes 0x100C2CE8
  QtScriptd4!QTWTF::RefPtr<QTJSC::UStringImpl>::operator= file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\wtf\refptr.h line 117+0 bytes 0x100375B0
  QtScriptd4!QTJSC::Register::operator= file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\register.h line 118+15 bytes 0x10092C26
  QtScriptd4!QTJSC::ExecState::setCalleeArguments file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\callframe.h line 113+22 bytes 0x10094436
  QtScriptd4!QTJSC::JITCode::execute file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\jit\jitcode.h line 79+36 bytes 0x100945BB
  QtScriptd4!QTJSC::Interpreter::execute file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\interpreter.cpp line 716+49 bytes 0x1008630D
  QtScriptd4!QTJSC::JSFunction::call file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\jsfunction.cpp line 122+78 bytes 0x1010BF05
  QtScriptd4!QTJSC::call file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\calldata.cpp line 62+43 bytes 0x100E5E36
  QtScriptd4!QScriptValue::call file C:\Qt\4.7.1\src\script\api\qscriptvalue.cpp line 1605+59 bytes 0x101C3739
  QtDeclaratived4!QDeclarativeQtScriptExpression::eval file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 479+67 bytes 0x660DE901
  QtDeclaratived4!QDeclarativeQtScriptExpression::scriptValue file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 434+20 bytes 0x660DE6E4
  QtDeclaratived4!QDeclarativeExpressionPrivate::scriptValue file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 614+23 bytes 0x660DF149
  QtDeclaratived4!QDeclarativeExpressionPrivate::value file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 628+31 bytes 0x660DF227
  QtDeclaratived4!QDeclarativeBoundSignal::qt_metacall file c:\qt\4.7.1\src\declarative\qml\qdeclarativeboundsignal.cpp line 177+35 bytes 0x6604CCAF
  QtCored4!QMetaObject::activate file c:\qt\4.7.1\src\corelib\kernel\qobject.cpp line 3465+39 bytes 0x671518CC
  QtDeclaratived4!QDeclarativeMouseArea::pressed file c:\qt\4.7.1\src\declarative\tmp\moc\debug_shared\moc_qdeclarativemousearea_p.cpp line 429+21 bytes 0x662B135B
  QtDeclaratived4!QDeclarativeMouseArea::setPressed file c:\qt\4.7.1\src\declarative\graphicsitems\qdeclarativemousearea.cpp line 845+0 bytes 0x661985F9
  QtDeclaratived4!QDeclarativeMouseArea::mousePressEvent file c:\qt\4.7.1\src\declarative\graphicsitems\qdeclarativemousearea.cpp line 462+13 bytes 0x66196D5E
  gc6prof!0xb22151 0xB22151
  gc6prof!0xb21f1d 0xB21F1D
  gc6prof!MessageOut::OutputLastError+45268 bytes 0xB3C5C4
  gc6prof!MessageOut::OutputLastError+45311 bytes 0xB3C5EF


StackTrace Content
  MSVCR90D!malloc_base+254 bytes 0x4D103E
  MSVCR90D!malloc_dbg+774 bytes 0x4DFD76
  MSVCR90D!malloc_dbg+191 bytes 0x4DFB2F
  MSVCR90D!malloc_dbg+108 bytes 0x4DFADC
  MSVCR90D!malloc+27 bytes 0x4EB25B
  MSVCR90D!operator new+17 bytes 0x4CD691
  QtScriptd4!QScriptObject::setDelegate file C:\Qt\4.7.1\src\script\bridge\qscriptobject_p.h line 168+7 bytes 0x101AFB38
  QtScriptd4!QScriptDeclarativeClass::newObject file C:\Qt\4.7.1\src\script\bridge\qscriptdeclarativeclass.cpp line 203+0 bytes 0x101E4DC3
  QtDeclaratived4!QDeclarativeObjectScriptClass::newQObject file c:\qt\4.7.1\src\declarative\qml\qdeclarativeobjectscriptclass.cpp line 120+109 bytes 0x66199FD2
  QtDeclaratived4!QDeclarativeObjectScriptClass::property file c:\qt\4.7.1\src\declarative\qml\qdeclarativeobjectscriptclass.cpp line 258+35 bytes 0x6619AA67
  QtDeclaratived4!QDeclarativeContextScriptClass::property file c:\qt\4.7.1\src\declarative\qml\qdeclarativecontextscriptclass.cpp line 273+29 bytes 0x660A1D14
  QtScriptd4!QTJSC::JSObject::getPropertySlot file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\jsobject.h line 391+20 bytes 0x100413AC
  QtScriptd4!cti_op_resolve_skip file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\jit\jitstubs.cpp line 2298+20 bytes 0x100C2CE8
  QtScriptd4!QTWTF::RefPtr<QTJSC::UStringImpl>::operator= file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\wtf\refptr.h line 117+0 bytes 0x100375B0
  QtScriptd4!QTJSC::Register::operator= file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\register.h line 118+15 bytes 0x10092C26
  QtScriptd4!QTJSC::ExecState::setCalleeArguments file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\callframe.h line 113+22 bytes 0x10094436
  QtScriptd4!QTJSC::JITCode::execute file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\jit\jitcode.h line 79+36 bytes 0x100945BB
  QtScriptd4!QTJSC::Interpreter::execute file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\interpreter\interpreter.cpp line 716+49 bytes 0x1008630D
  QtScriptd4!QTJSC::JSFunction::call file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\jsfunction.cpp line 122+78 bytes 0x1010BF05
  QtScriptd4!QTJSC::call file C:\Qt\4.7.1\src\3rdparty\javascriptcore\javascriptcore\runtime\calldata.cpp line 62+43 bytes 0x100E5E36
  QtScriptd4!QScriptValue::call file C:\Qt\4.7.1\src\script\api\qscriptvalue.cpp line 1605+59 bytes 0x101C3739
  QtDeclaratived4!QDeclarativeQtScriptExpression::eval file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 479+67 bytes 0x660DE901
  QtDeclaratived4!QDeclarativeQtScriptExpression::scriptValue file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 434+20 bytes 0x660DE6E4
  QtDeclaratived4!QDeclarativeExpressionPrivate::scriptValue file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 614+23 bytes 0x660DF149
  QtDeclaratived4!QDeclarativeExpressionPrivate::value file c:\qt\4.7.1\src\declarative\qml\qdeclarativeexpression.cpp line 628+31 bytes 0x660DF227
  QtDeclaratived4!QDeclarativeBoundSignal::qt_metacall file c:\qt\4.7.1\src\declarative\qml\qdeclarativeboundsignal.cpp line 177+35 bytes 0x6604CCAF
  QtCored4!QMetaObject::activate file c:\qt\4.7.1\src\corelib\kernel\qobject.cpp line 3465+39 bytes 0x671518CC
  QtDeclaratived4!QDeclarativeMouseArea::pressed file c:\qt\4.7.1\src\declarative\tmp\moc\debug_shared\moc_qdeclarativemousearea_p.cpp line 429+21 bytes 0x662B135B
  QtDeclaratived4!QDeclarativeMouseArea::setPressed file c:\qt\4.7.1\src\declarative\graphicsitems\qdeclarativemousearea.cpp line 845+0 bytes 0x661985F9
  QtDeclaratived4!QDeclarativeMouseArea::mousePressEvent file c:\qt\4.7.1\src\declarative\graphicsitems\qdeclarativemousearea.cpp line 462+13 bytes 0x66196D5E
  gc6prof!0xb22151 0xB22151
  gc6prof!0xb21f1d 0xB21F1D




_______________________________________________
Qt-qml mailing list
Qt-qml at qt.nokia.com<mailto:Qt-qml at qt.nokia.com>
http://lists.qt.nokia.com/mailman/listinfo/qt-qml
_______________________________________________ Qt-qml mailing list Qt-qml at qt.nokia.com<mailto:Qt-qml at qt.nokia.com> http://lists.qt.nokia.com/mailman/listinfo/qt-qml
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt.nokia.com/pipermail/qt-qml/attachments/20101229/3aa30804/attachment-0001.html 


More information about the Qt-qml mailing list