Coder Social home page Coder Social logo

Mem leak about vue-image-lightbox HOT 4 CLOSED

pexea12 avatar pexea12 commented on August 20, 2024
Mem leak

from vue-image-lightbox.

Comments (4)

pexea12 avatar pexea12 commented on August 20, 2024

Hammer is not a traditional event emitter from javascript. It is only a normal object which follows observer pattern. Therefore, there is no need to destroy it because Javascript garbage collector will do it for us.

from vue-image-lightbox.

imcvampire avatar imcvampire commented on August 20, 2024

No, you still have to stop, destroy and set this variable to null to get garbage collector work.
You can check its documentation (http://hammerjs.github.io/api/) and an example from a react component (https://github.com/JedWatson/react-hammerjs/blob/master/src/Hammer.js#L122)

from vue-image-lightbox.

pexea12 avatar pexea12 commented on August 20, 2024

You are right in case of a dangling pointer where you attach an event to an outside component.

For example, if you attach event e to component Father which uses component Child. If Child is destroyed but Father and e are alive, then there will be a problem. Therefore, e must be detached and destroyed also. However, if Child and Father are destroyed, there will be no dangling references and garbage collector can work well without killing e.

You should notice that I attach 2 hammer event to a DOM component which is inside the lightbox. After the lightbox is destroyed, both the hammer object and this DOM component are destroyed also. Therefore it is unnecessary to detach and destroy the attached events.

In the React component vue-hammer above, you can see that the hammer object is a property of the component (this.hammer). Hence, when the component is unmounted, he must kill the event because the DOM component is destroyed but hammer is still alive. Things are different in the lightbox because hammer is destroyed even before the DOM component is destroyed. I used to consider detach it but I found it unnecessary.

from vue-image-lightbox.

imcvampire avatar imcvampire commented on August 20, 2024

Thank you, I get your point! But I will do more test to make sure everything works properly!

from vue-image-lightbox.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.