2013-08-30 62 views
2
08-30 14:24:14.281: D/dalvikvm(2777): GC_FOR_ALLOC freed 6319K, 41% free 9950K/16724K, paused 12ms, total 12ms 
08-30 14:24:14.281: I/dalvikvm-heap(2777): Grow heap (frag case) to 13.750MB for 4194320-byte allocation 
08-30 14:24:14.291: D/dalvikvm(2777): GC_FOR_ALLOC freed <1K, 17% free 14045K/16724K, paused 13ms, total 13ms 
08-30 14:24:14.381: D/dalvikvm(2777): GC_FOR_ALLOC freed 5122K, 30% free 9955K/14152K, paused 12ms, total 12ms 
08-30 14:24:14.381: I/dalvikvm-heap(2777): Grow heap (frag case) to 13.755MB for 4194320-byte allocation 
08-30 14:24:14.391: D/dalvikvm(2777): GC_FOR_ALLOC freed <1K, 1% free 14051K/14152K, paused 13ms, total 13ms 
08-30 14:24:14.451: D/dalvikvm(2777): GC_FOR_ALLOC freed 5122K, 2% free 8933K/9032K, paused 14ms, total 14ms 
08-30 14:24:14.461: I/dalvikvm-heap(2777): Grow heap (frag case) to 12.273MB for 3686416-byte allocation 
08-30 14:24:14.471: D/dalvikvm(2777): GC_FOR_ALLOC freed <1K, 1% free 12533K/12636K, paused 12ms, total 12ms 
08-30 14:24:14.731: D/dalvikvm(2777): GC_FOR_ALLOC freed <1K, 1% free 12533K/12636K, paused 12ms, total 12ms 
08-30 14:24:14.761: I/dalvikvm-heap(2777): Grow heap (frag case) to 26.335MB for 14745616-byte allocation 
08-30 14:24:14.781: D/dalvikvm(2777): GC_FOR_ALLOC freed 0K, 1% free 26933K/27040K, paused 14ms, total 14ms 
08-30 14:24:27.525: A/libc(2777): Fatal signal 11 (SIGSEGV) at 0x43337b60 (code=2), thread 2797 (Thread-202) 

當創建ByeBuffers來存儲openGL紋理的頂點數組時,會發生這種情況。 我該如何處理?它發生在我的兩臺設備上。Java - Android致命信號11 SIGSEGV

+1

這是內存相關問題 –

+0

嘗試增加模擬器的虛擬內存來證明這一點,但是這是與將數組加載到內存中相關的事情。我們可以有代碼嗎? – g00dy

+1

檢查ByteBuffers是否成功分配,並且您沒有進行綁定訪問(也許您或OpenGL對其大小有一些誤解)。 – Leonidos

回答

6

您可以從上次Garbage Collection調用中看到垃圾回收器未能釋放任何內存,並且您沒有可用的內存。你的緩衝區有多大?他們需要多少額外的頭部空間?

一個可能的解決方案是通過在你的應用程序清單,記錄在developer site

1

答案設置android:largeHeap="true"使用更大的堆大小,緩衝區不夠大調查。然後openGL API(在我的情況下)訪問 一個無效的偏移量(在低級別)並導致分段錯誤,就像訪問C中的無效內存將得到 一樣。這發生在java之外,因爲字節緩衝區 由內核允許硬件和低級代碼與你的內存一起工作。

相關問題