【环境】
Linux环境
约定: 所有的测试文件都放在2022-3-14目录下
【1】
将 JAVA_HOME/include/jni.h 和 JAVA_HOME/include/linux/jni_md.h...函数申请内存, 主要就是要观察在Java中, 堆外内存/直接内存的申请方式, 以及如何被管理的....我们再改变一下, 不使用malloc分配内存, 而是使用mmap分配内存....两个区间都是32MB, 与我们申请的吻合
哎,在这里我们看到使用mmap申请的内存, 我们拿到的起始地址就是maps中显示的地址, 是吻合的....而Java方式拿到的地址, 还是一样, 偏差了0x10
简单说, malloc底层调用mmap系统函数申请内存(还有一种是brk系统函数), 只是malloc又对从操作系统拿到的内存做了手脚, 之所以做手脚是为了合理管理内存