java NIO heap Buffer和direct Buffer
Java NIO中的direct buffer(主要是DirectByteBuffer),分两部分:
java | native
|
DirectByteBuffer | malloc'd
[ address ] -+-> [ data ]
|
其中 DirectByteBuffer 自身是一个Java对象,在Java堆中;而这个对象中有个long类型字段address,记录着一块调用 malloc() 申请到的native memory。
direct buffer的JAVA对象是归GC管理的,只要GC回收了它的JAVA对象,操作系统才会释放direct buffer所申请的空间。