Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. Memory not released when multiple Image is loaded continuously
Qt 6.11 is out! See what's new in the release blog

Memory not released when multiple Image is loaded continuously

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
29 Posts 7 Posters 17.9k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Axel SpoerlA Offline
    Axel SpoerlA Offline
    Axel Spoerl
    Moderators
    wrote on last edited by
    #14

    Which Qt version are you using?

    Software Engineer
    The Qt Company, Oslo

    A 1 Reply Last reply
    0
    • Axel SpoerlA Axel Spoerl

      Which Qt version are you using?

      A Offline
      A Offline
      AdarshKale
      wrote on last edited by
      #15

      @Axel-Spoerl said in Memory not released when multiple Image is loaded continuously:

      Which Qt version are you using?

      5.15

      1 Reply Last reply
      0
      • Axel SpoerlA Offline
        Axel SpoerlA Offline
        Axel Spoerl
        Moderators
        wrote on last edited by
        #16

        That explains a lot. Outdated version. There is a memory leak in the quick pixmap cache, and it won't be fixed.
        Upgrade to Qt 6.7.

        Software Engineer
        The Qt Company, Oslo

        1 Reply Last reply
        1
        • A Offline
          A Offline
          AdarshKale
          wrote on last edited by AdarshKale
          #17

          However, we cannot upgrade to newer Qt versions at this stage of the project.
          Is there any other way possible?

          There should be some workaround to clear the accumulated memory.?

          1 Reply Last reply
          0
          • Axel SpoerlA Offline
            Axel SpoerlA Offline
            Axel Spoerl
            Moderators
            wrote on last edited by Axel Spoerl
            #18

            Qt 5.15 is an outdated Qt version. Given the simplicity of the project, cannot sound more like don't want to.
            There is no other way possible and a workaround for 5.15 will not be implemented.

            Software Engineer
            The Qt Company, Oslo

            GrecKoG 1 Reply Last reply
            0
            • A Offline
              A Offline
              AdarshKale
              wrote on last edited by AdarshKale
              #19

              There are a few deprecated APIs used and many syntax changes if we upgrade to the latest 6.x version which is risky at this stage.
              hence we are finding an alternative way.

              Any possibility of calling garbage collection periodically?
              Will this accumulated memory get freed with garbage collection?

              JonBJ Axel SpoerlA 2 Replies Last reply
              0
              • A AdarshKale

                There are a few deprecated APIs used and many syntax changes if we upgrade to the latest 6.x version which is risky at this stage.
                hence we are finding an alternative way.

                Any possibility of calling garbage collection periodically?
                Will this accumulated memory get freed with garbage collection?

                JonBJ Offline
                JonBJ Offline
                JonB
                wrote on last edited by
                #20

                @AdarshKale said in Memory not released when multiple Image is loaded continuously:

                Any possibility of calling garbage collection periodically?
                Will this accumulated memory get freed with garbage collection?

                No. No.

                If you read referenced QTBUG you would see how involved the code is, and that it has been integrated into Qt6.x.

                1 Reply Last reply
                1
                • A AdarshKale

                  There are a few deprecated APIs used and many syntax changes if we upgrade to the latest 6.x version which is risky at this stage.
                  hence we are finding an alternative way.

                  Any possibility of calling garbage collection periodically?
                  Will this accumulated memory get freed with garbage collection?

                  Axel SpoerlA Offline
                  Axel SpoerlA Offline
                  Axel Spoerl
                  Moderators
                  wrote on last edited by
                  #21

                  @AdarshKale

                  There are a few deprecated APIs used and many syntax changes if we upgrade to the latest 6.x version which is risky at this stage.

                  How complex and risky can an opensource wheel rotation app be, when it has to fit into 500MB of RAM including OS and Qt?

                  hence we are finding an alternative way.

                  No matter how often you ask: Upgrade to Qt6 is the only option.

                  Software Engineer
                  The Qt Company, Oslo

                  A 1 Reply Last reply
                  0
                  • Axel SpoerlA Axel Spoerl

                    Qt 5.15 is an outdated Qt version. Given the simplicity of the project, cannot sound more like don't want to.
                    There is no other way possible and a workaround for 5.15 will not be implemented.

                    GrecKoG Offline
                    GrecKoG Offline
                    GrecKo
                    Qt Champions 2018
                    wrote on last edited by
                    #22

                    @Axel-Spoerl said in Memory not released when multiple Image is loaded continuously:

                    Qt 5.15 is an outdated Qt version. Given the simplicity of the project, cannot sound more like don't want to.

                    You've got to chill. Qt 5.15 is still a supported LTS version. Doing a major version upgrade of a big depency like Qt is not a small meaningless task. It's very understandable that this can't been done in an advanced stage of a project.

                    @AdarshKale as it seems there is no easy fix for your issue in Qt 5, a workaround would be to not use Image. What do you mean by wheel rotation? Is that changing the angle or rotating between multiple images? The formzr could be done by animating the rotation property.
                    Alternatively if you do need to have multiple images, you could try implementing a custom QQuickPaintedItem and painting your images there, bypassing the QtQuick cache.

                    Axel SpoerlA A 2 Replies Last reply
                    3
                    • jeremy_kJ Offline
                      jeremy_kJ Offline
                      jeremy_k
                      wrote on last edited by
                      #23

                      Has precreating all of the required Image instances been tried?

                      I haven't delved into the pixmap cache bug, but the description suggests that it is loading (and unloading) that causes the leak, rather than repeat references to loaded data. Rather than changing the source of a single Image, just set the current image.visible to false, and the next to true.

                      Another alternative is to attempt to structure the animation as a transformation of a single Image.

                      Asking a question about code? http://eel.is/iso-c++/testcase/

                      1 Reply Last reply
                      1
                      • GrecKoG GrecKo

                        @Axel-Spoerl said in Memory not released when multiple Image is loaded continuously:

                        Qt 5.15 is an outdated Qt version. Given the simplicity of the project, cannot sound more like don't want to.

                        You've got to chill. Qt 5.15 is still a supported LTS version. Doing a major version upgrade of a big depency like Qt is not a small meaningless task. It's very understandable that this can't been done in an advanced stage of a project.

                        @AdarshKale as it seems there is no easy fix for your issue in Qt 5, a workaround would be to not use Image. What do you mean by wheel rotation? Is that changing the angle or rotating between multiple images? The formzr could be done by animating the rotation property.
                        Alternatively if you do need to have multiple images, you could try implementing a custom QQuickPaintedItem and painting your images there, bypassing the QtQuick cache.

                        Axel SpoerlA Offline
                        Axel SpoerlA Offline
                        Axel Spoerl
                        Moderators
                        wrote on last edited by
                        #24

                        @GrecKo
                        I'll chill, thanks for the feedback!
                        5.15 releases are either outdated, or commercial.
                        Hence my reluctance to supporting them through the forum.

                        Software Engineer
                        The Qt Company, Oslo

                        1 Reply Last reply
                        0
                        • Axel SpoerlA Axel Spoerl

                          @AdarshKale

                          There are a few deprecated APIs used and many syntax changes if we upgrade to the latest 6.x version which is risky at this stage.

                          How complex and risky can an opensource wheel rotation app be, when it has to fit into 500MB of RAM including OS and Qt?

                          hence we are finding an alternative way.

                          No matter how often you ask: Upgrade to Qt6 is the only option.

                          A Offline
                          A Offline
                          AdarshKale
                          wrote on last edited by AdarshKale
                          #25

                          @Axel-Spoerl

                          How complex and risky can an opensource wheel rotation app

                          Wheel Rotation is just one feature among 100s of them in this project.
                          We will consider upgrading to the latest Qt versions going further in upcoming projects.

                          1 Reply Last reply
                          0
                          • GrecKoG GrecKo

                            @Axel-Spoerl said in Memory not released when multiple Image is loaded continuously:

                            Qt 5.15 is an outdated Qt version. Given the simplicity of the project, cannot sound more like don't want to.

                            You've got to chill. Qt 5.15 is still a supported LTS version. Doing a major version upgrade of a big depency like Qt is not a small meaningless task. It's very understandable that this can't been done in an advanced stage of a project.

                            @AdarshKale as it seems there is no easy fix for your issue in Qt 5, a workaround would be to not use Image. What do you mean by wheel rotation? Is that changing the angle or rotating between multiple images? The formzr could be done by animating the rotation property.
                            Alternatively if you do need to have multiple images, you could try implementing a custom QQuickPaintedItem and painting your images there, bypassing the QtQuick cache.

                            A Offline
                            A Offline
                            AdarshKale
                            wrote on last edited by AdarshKale
                            #26

                            @GrecKo

                            What do you mean by wheel rotation? Is that changing the angle or rotating between multiple images? The formzr could be done by animating the rotation property.

                            Here this is not simple Image rotation, we have an axle with 2 wheels attached to them on both ends and we need to rotate the wheels alone based on the direction.
                            We will try on the QQuickPaintedItem, Thanks for the input.

                            GrecKoG 1 Reply Last reply
                            0
                            • A AdarshKale

                              @GrecKo

                              What do you mean by wheel rotation? Is that changing the angle or rotating between multiple images? The formzr could be done by animating the rotation property.

                              Here this is not simple Image rotation, we have an axle with 2 wheels attached to them on both ends and we need to rotate the wheels alone based on the direction.
                              We will try on the QQuickPaintedItem, Thanks for the input.

                              GrecKoG Offline
                              GrecKoG Offline
                              GrecKo
                              Qt Champions 2018
                              wrote on last edited by
                              #27

                              @AdarshKale said in Memory not released when multiple Image is loaded continuously:

                              Here this is not simple Image rotation, we have an axle with 2 wheels attached to them on both ends and we need to rotate the wheels alone based on the direction.

                              I don't see how that invalidate using a simple rotation. But I don't have all the info you have so it might actually be not possible. Are you willing to share an image of how the wheels will appear rotated? Even a quick sketch should do.

                              A 1 Reply Last reply
                              0
                              • GrecKoG GrecKo

                                @AdarshKale said in Memory not released when multiple Image is loaded continuously:

                                Here this is not simple Image rotation, we have an axle with 2 wheels attached to them on both ends and we need to rotate the wheels alone based on the direction.

                                I don't see how that invalidate using a simple rotation. But I don't have all the info you have so it might actually be not possible. Are you willing to share an image of how the wheels will appear rotated? Even a quick sketch should do.

                                A Offline
                                A Offline
                                AdarshKale
                                wrote on last edited by AdarshKale
                                #28

                                @GrecKo said in Memory not released when multiple Image is loaded continuously:

                                I don't see how that invalidate using a simple rotation. But I don't have all the info you have so it might actually be not possible. Are you willing to share an image of how the wheels will appear rotated? Even a quick sketch should do.

                                f5a6b131-f279-4d2e-aab7-4f29eda21bab-image.png

                                From centre to right, we have around 25 images and from centre to left, we have 25 images.
                                We have intermediate angles between the centre and right as well as left.

                                We need to rotate the wheels based on the Actual steering wheel angle.
                                The wheels are also not like the 2D circular image, they have different perspectives when they are at different angles.

                                GrecKoG 1 Reply Last reply
                                0
                                • A AdarshKale

                                  @GrecKo said in Memory not released when multiple Image is loaded continuously:

                                  I don't see how that invalidate using a simple rotation. But I don't have all the info you have so it might actually be not possible. Are you willing to share an image of how the wheels will appear rotated? Even a quick sketch should do.

                                  f5a6b131-f279-4d2e-aab7-4f29eda21bab-image.png

                                  From centre to right, we have around 25 images and from centre to left, we have 25 images.
                                  We have intermediate angles between the centre and right as well as left.

                                  We need to rotate the wheels based on the Actual steering wheel angle.
                                  The wheels are also not like the 2D circular image, they have different perspectives when they are at different angles.

                                  GrecKoG Offline
                                  GrecKoG Offline
                                  GrecKo
                                  Qt Champions 2018
                                  wrote on last edited by
                                  #29

                                  I'd try doing that with an AnimatedSprite, you can set the currentFrame property manually.

                                  1 Reply Last reply
                                  0

                                  • Login

                                  • Login or register to search.
                                  • First post
                                    Last post
                                  0
                                  • Categories
                                  • Recent
                                  • Tags
                                  • Popular
                                  • Users
                                  • Groups
                                  • Search
                                  • Get Qt Extensions
                                  • Unsolved