# Memory leak issue

**URL:** <https://discourse.threejs.org/t/memory-leak-issue/21366>\
**Category:** Questions\
**Tags:** dispose, memory-leak, memory, performance\
**Created:** [December 8, 2020, 7:47pm UTC](https://discourse.threejs.org/t/memory-leak-issue/21366 "2020-12-08T19:47:42Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Lawrence3DPK](https://yyz1.discourse-cdn.com/flex035/user_avatar/discourse.threejs.org/lawrence3dpk/32/29184_2.png) [@Lawrence3DPK](https://discourse.threejs.org/u/Lawrence3DPK)\
**Post date:** [December 8, 2020, 9:10pm UTC](https://discourse.threejs.org/t/memory-leak-issue/21366/2 "2020-12-08T21:10:54Z")

</div>

Try with function like this…

```javascript
function disposeNode (node)
{
    if (node instanceof THREE.Mesh)
    {
        if (node.geometry)
        {
            node.geometry.dispose ();
        }

        if (node.material)
        {
            if (node.material instanceof THREE.MeshFaceMaterial)
            {
                $.each (node.material.materials, function (idx, mtrl)
                {
                    if (mtrl.map) mtrl.map.dispose ();
                    if (mtrl.lightMap) mtrl.lightMap.dispose ();
                    if (mtrl.bumpMap) mtrl.bumpMap.dispose ();
                    if (mtrl.normalMap) mtrl.normalMap.dispose ();
                    if (mtrl.specularMap) mtrl.specularMap.dispose ();
                    if (mtrl.envMap) mtrl.envMap.dispose ();
                    if (mtrl.alphaMap) mtrl.alphaMap.dispose();
                    if (mtrl.aoMap) mtrl.aoMap.dispose();
                    if (mtrl.displacementMap) mtrl.displacementMap.dispose();
                    if (mtrl.emissiveMap) mtrl.emissiveMap.dispose();
                    if (mtrl.gradientMap) mtrl.gradientMap.dispose();
                    if (mtrl.metalnessMap) mtrl.metalnessMap.dispose();
                    if (mtrl.roughnessMap) mtrl.roughnessMap.dispose();

                    mtrl.dispose (); // disposes any programs associated with the material
                });
            }
            else
            {
                if (node.material.map) node.material.map.dispose ();
                if (node.material.lightMap) node.material.lightMap.dispose ();
                if (node.material.bumpMap) node.material.bumpMap.dispose ();
                if (node.material.normalMap) node.material.normalMap.dispose ();
                if (node.material.specularMap) node.material.specularMap.dispose ();
                if (node.material.envMap) node.material.envMap.dispose ();
                if (node.material.alphaMap) node.material.alphaMap.dispose();
                if (node.material.aoMap) node.material.aoMap.dispose();
                if (node.material.displacementMap) node.material.displacementMap.dispose();
                if (node.material.emissiveMap) node.material.emissiveMap.dispose();
                if (node.material.gradientMap) node.material.gradientMap.dispose();
                if (node.material.metalnessMap) node.material.metalnessMap.dispose();
                if (node.material.roughnessMap) node.material.roughnessMap.dispose();

                node.material.dispose (); // disposes any programs associated with the material
            }
        }
    }
} // disposeNode

function disposeHierarchy (node, callback)
{
    for (var i = node.children.length - 1; i >= 0; i--)
    {
        var child = node.children[i];
        disposeHierarchy (child, callback);
        callback (child);
    }
}

```

And then call the function with this…

```javascript
disposeHierarchy (model, disposeNode);

```

---

_[View the full topic](https://discourse.threejs.org/t/memory-leak-issue/21366)._
