2013-08-30 48 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之外,因为字节缓冲区 由内核允许硬件和低级代码与你的内存一起工作。

相关问题