2012-04-19 69 views
0

我必须在render()中使用libgdx渲染网格数组。我使用处理程序,因为每当我在meshArr数组中的getMeshToRender()方法中获取新数据时。OutOfMemoryError在libgdx中渲染时

 onCreate() 
     { 
      handler.removeCallbacks(sendUpdatesToUI); 
      handler.postDelayed(sendUpdatesToUI, 1000); // 1 second 
     } 

     Runnable sendUpdatesToUI = new Runnable() 
    { 
      public void run() 
      { 
       //DisplayLoggingInfo(); 
       getMeshToRender(); 
       handler.postDelayed(this, 1000); // 1 seconds 
      } 
     };   

    getMeshToRender() 

{ 

    ....... 
    meshArr = new Mesh[numMesh]; 
    ....... 
} 

在Render()方法中,它最初加载该meshArr,但随后使用OutOfMemoryError崩溃。

任何解决方案都是可以接受的。 谢谢

+1

IMO,增加堆大小。 – sgowd 2012-04-19 09:39:30

+0

我有非常大的阵列,它已经给我下面的错误:从49.908MB钳位目标GC堆48.000MB。在这里,每秒我都要用新值加载该数组。 – 2012-04-19 09:41:53

+0

你的JVM堆大小是多少? – sgowd 2012-04-19 09:45:25

回答

0

简单而唯一的答案是使用更少的内存。

要么你只是使用太多不同的网格,你应该重新考虑你的整个想法,或者你正在替换它们,而没有正确处理旧的。

如果你想释放未使用的网格,你应该使用Mesh#dispose()