前言
之前在看netty的时候,不断的提到直接内存与零拷贝,所以就想看看JVM与直接内存的之间的关系;
环境准备
系统:macOS 11+
Jdk:jdk1.8
内存:16G
直接内存分析
1.直接内存与heap空间、meta空间之间的关系
Code-1:申请直接内存
//-Xmx2g -XX:+PrintGCDetails
public class BufferTest1 {
private static final int BUFFER = 1024 * 1024 * 1024;//1GB
public static void main(String[] args) throws InterruptedException {
Thread.sleep(5000l);
Scanner scanner = new Scanner(System.in);
System.out.println("请求指示:");
scanner.next();
//直接分配本地内存空间
ByteBuffer byteBuffer = ByteBuffer.allocateDirect(BUFFER);
System.out.println("直接内存分配完毕,请求指示!");
scanner.next();
System.out.println("直接内存开始释放!");
byteBuffer = null;
System.gc();
scanner.next();
}
}
可以发现直接内存 heap空间与meta空间都是没有影响的,但是对应进程占用的内存是有直接影响的。
2.直接内存最大内存
Code-2:多申请几个直接内存
//-Xmx2g -XX:+PrintGCDetails
public class BufferTest2 {
private static final int BUFFER = 1024 * 1024 * 1024;//1GB
pri

最低0.47元/天 解锁文章
1302

被折叠的 条评论
为什么被折叠?



