1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package
com.stevex.app.nio;
import
java.nio.ByteBuffer;
import
java.util.concurrent.TimeUnit;
public
class
DirectByteBufferTest {
public
static
void
main(String[] args)
throws
InterruptedException{
//分配128MB直接内存
ByteBuffer bb = ByteBuffer.allocateDirect(
1024
*
1024
*
128
);
TimeUnit.SECONDS.sleep(
10
);
System.out.println(
"ok"
);
}
}
|
1
2
3
4
5
|
Exception in thread "main" java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:658)
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
at com.stevex.app.nio.DirectByteBufferTest.main(DirectByteBufferTest.java:8)
|
1
|
|
1
2
3
4
5
|
Exception in thread "main" java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:658)
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
at com.stevex.app.nio.DirectByteBufferTest.main(DirectByteBufferTest.java:8)
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package
com.stevex.app.nio;
import
java.nio.ByteBuffer;
import
java.util.concurrent.TimeUnit;
import
sun.nio.ch.DirectBuffer;
public
class
DirectByteBufferTest {
public
static
void
main(String[] args)
throws
InterruptedException{
//分配512MB直接缓存
ByteBuffer bb = ByteBuffer.allocateDirect(
1024
*
1024
*
512
);
TimeUnit.SECONDS.sleep(
10
);
//清除直接缓存
((DirectBuffer)bb).cleaner().clean();
TimeUnit.SECONDS.sleep(
10
);
System.out.println(
"ok"
);
}
}
|