Oracle JDK 6u32前的版本不会.Direct ByteBuffer是在Java Heap外分配内存,NIO等东西里使用的比较多,但Direct ByteBuffer分配出去的内存其实也是由GC负责回收的,而不像之前一篇文章里的Unsafe是完全自行管理的,Hotspot在GC时会扫
int numOfBytesReceived=msg.arg1; byte[]buffer=(byte[])msg.obj; String strReceived=new String(buffer); strReceived=strReceived.substring(0,numOfBytesReceived); 数组越界了,看看这个String的长度吧