2012-04-19 70 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()