JVM(四)-- 对象的实例化内存布局和直接内存
目录
一、对象的实例化
1. 创建对象的方式
2. 创建对象的步骤
二、对象的内存布局
三、直接内存
1. 概述
2. 直接内存的OOM与内存大小设置
一、对象的实例化
1. 创建对象的方式
2. 创建对象的步骤
二、对象的内存布局
对象头包含两部分:运行时元数据和类型指针。运行时元数据又包括哈希值、GC分代年龄、锁状态标志、线程持有的锁等。
通过如下代码来了解一下对象实际的内存布局:
从上述代码我们可以看到,定义了一个Customer类,然后再CustomerTest的main方法中创建了一个Customer的对象实例。
下图展示了创建这个对象实例的完整过程。可以看到对象头中存放了运行时元数据和类型指针,而类型指针指向了方法区(元空间)中该类所对应的类信息。
三、直接内存
1. 概述
IO和NIO是 Java 中处理输入输出的两种模型。
IO是同步阻塞式的输入输出流,通过字符流和字节流传输数据;NIO是同步非阻塞式的输入输出流,通过缓冲区或者通道传输数据。
下图是IO和NIO的区别。