相关疑难解决方法(0)

释放ThreeJS应用程序的内存

我目前在使用ThreeJS应用程序时释放内存时遇到问题.

我知道有关于这个问题的几个问题:

用我做了以下打字稿函数处理我的对象:

function dispose( object3D: THREE.Object3D ): void
{
    // Dispose children first
    for ( let childIndex = 0; childIndex < object3D.children.length; ++childIndex )
    {
        this.dispose( object3D.children[childIndex] );
    }

    object3D.children = [];

    if ( object3D instanceof THREE.Mesh )
    {
        // Geometry
        object3D.geometry.dispose();

        // Material(s)
        if ( object3D.material instanceof THREE.MultiMaterial )
        {
            for ( let matIndex = 0; matIndex < object3D.material.materials.length; ++matIndex )
            {
                object3D.material.materials[matIndex].dispose();
                object3D.material.materials[matIndex] = null;
            }
            object3D.material.materials = []; …
Run Code Online (Sandbox Code Playgroud)

javascript memory three.js

9
推荐指数
1
解决办法
744
查看次数

在three.js中释放内存

我的应用程序加载了很多网格.摆脱旧网格我试图处理它们.但记忆永远不会被释放.

我错过了什么吗?

我复制的简单例子:

  1. 加载100个大二进制网格
  2. 再次处置所有这些
  3. chrome任务管理器说使用250mb内存,它与没有第2步的情况完全相同

    MEMTEST

    var scene = new THREE.Scene();
    var mymesh=Array();
    
    // 1. load a lot of geometry/meshes...
    
    for(var i=0;i<100;i++)
    {
        var bloader;
        bloader = new THREE.BinaryLoader();
    
        bloader.load( "objekte/presto_6.js" , function( geometry ) 
        {
            mymesh.push(new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( {color:0xffffff } ) ));
            scene.add(mymesh.length-1);
        });
    }
    
    // 2. try to dispose objects and free memory...
    
    for(var j=0;j<mymesh.length;j++)
    {
        mymesh[j].geometry.dispose();
        mymesh[j].material.dispose();
        screne.remove(mymesh[j]);
    }
    
    mymesh=Array();
    
    </script>
    
    Run Code Online (Sandbox Code Playgroud)

javascript memory three.js

4
推荐指数
1
解决办法
9442
查看次数

标签 统计

javascript ×2

memory ×2

three.js ×2