jconsole无法节省非主内存的使用
我使用bytebuffer.alocatedirect(int)
在非Heap空间上分配直接缓冲区(100m),直到java.lang.outofmemoryerror:直接缓冲器存储器
forress。
但是,当我使用jconsole监视非主内存的使用情况时,未显示直接缓冲器。
import java.nio.ByteBuffer;
import java.util.LinkedList;
public class BufferTest {
public static void main(String[] args) throws InterruptedException {
LinkedList<ByteBuffer> ll = new LinkedList<ByteBuffer>();
int i = 0;
while (true) {
ByteBuffer buffer = ByteBuffer.allocateDirect(100 * 1024 * 1024);
while (buffer.hasRemaining()) {
buffer.put((byte) 1);
}
ll.add(buffer);
System.out.println(i++ + "\t" + buffer.isDirect() + "\t" + buffer.limit());
Thread.sleep(1000);
}
}
}
I use ByteBuffer.allocateDirect(int)
to allocate direct buffer(100M) on non-heap space until java.lang.OutOfMemoryError: Direct buffer memory
error thrown.
But when I use jconsole to monitoring the non-heap memory usage, no direct buffer used memory is shown.
import java.nio.ByteBuffer;
import java.util.LinkedList;
public class BufferTest {
public static void main(String[] args) throws InterruptedException {
LinkedList<ByteBuffer> ll = new LinkedList<ByteBuffer>();
int i = 0;
while (true) {
ByteBuffer buffer = ByteBuffer.allocateDirect(100 * 1024 * 1024);
while (buffer.hasRemaining()) {
buffer.put((byte) 1);
}
ll.add(buffer);
System.out.println(i++ + "\t" + buffer.isDirect() + "\t" + buffer.limit());
Thread.sleep(1000);
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论