![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM虚拟机
文章平均质量分 86
AfterSum
有所追求
展开
-
直接内存 直接内存的释放和回收
直接内存特点不属于Java虚拟机管理,属于系统内存;属于操作系统,常见于NIO操作时,比如ByteBuffer【】用于数据缓冲区分配回收成本较高,但读写性能高;不受JVM内存回收管理文件读写过程java不具备磁盘读写的能力,因此需要调用操作系统提供的方法;java函数->本地方法,用户态->内核态弊端:需要在系统内存和java堆内存都复制一份磁盘文件,浪费空间也降低传输效率。直接内存是在系统内存和Java堆内存之间开辟出的一块共享区域,可以供操作系统和java代码访问。原创 2022-03-15 10:42:44 · 2753 阅读 · 3 评论 -
1.4 JVM堆内存
JVM堆内存堆内存的特点Java堆(Java Heap)是java虚拟机所管理的内存中最大的一块;java堆被所有线程共享的一块内存区域;虚拟机启动时创建java堆;java堆的唯一目的就是存放对象实例;java堆是垃圾收集器管理的主要区域。从内存回收的角度来看, 由于现在收集器基本都采用分代收集算法, 所以Java堆可以细分为:新生代(Young)和老年代(Old)。 新生代又被划分为三个区域Eden、From Survivor, To Survivor等。无论怎么划分,最终存储的都是实例原创 2022-03-14 10:53:56 · 101 阅读 · 0 评论 -
1.2 Native关键字 程序计数器 方法区
Native关键字用Native关键字修饰的方法其实就是一个java调用非java代码的接口,这个接口的具体实现需要调用本地方法库。比如常见的Thread线程类在 Start()方法中调用了start0()方法,而start0()被native修饰,是一个本地方法接口,底层调用的是C++;native关键字修饰的方法其实就是一个java调用非java代码的接口,比如调用底层c++,c去实现跟硬件相关的操作;native修饰的方法会进入本地方法栈,由本地方法栈去调用本地方法接口,本地方法接口再去调原创 2022-03-13 20:30:48 · 2375 阅读 · 0 评论 -
类加载器和双亲委派机制
类加载器和双亲委派机制JVM中提供了三层的ClassLoader:Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。ExtClassLoader:扩展类加载器 主要负责加载jre/lib/ext目录下的一些扩展的jar。AppClassLoader:主要负责加载应用程序的主函数类类加载器 编译后的字节码文件首先由类加载器对其进行初始化,加载生成Class模板,使用new原创 2022-03-13 15:20:50 · 569 阅读 · 0 评论