IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JVM -- 直接内存 -> 正文阅读

[Java知识库]JVM -- 直接内存

并不属于JVM管理,属于系统内存,即操作系统的内存

  • 常见于NIO操作,用于数据缓冲区
  • 分配回收成本高,但读写性能高
  • 不受JVM内存回收管理

传统的阻塞IO

使用直接内存

?观看耗时:

?说明直接内存远远快于传统的方式

原理 -- 为什么读写效率变高

java本身并不具备磁盘读写的能力,他要使用操作系统的方法,其实就是调用native方法?,会涉及到用户态和内核态的切换,当切换到内核态,就可以由cpu的函数读取磁盘文件的内容,在操作系统内存划分出一块系统缓冲区,磁盘的内容存储到系统缓冲区,但是系统缓冲区Java代码是不能进行操作的,所以java也会在堆内存中分配一个java缓冲区,就是我们new的Byte数组,java要访问到系统缓冲区的数据,就要将系统缓冲区的内容读入到java缓冲区,因为现在有两块缓冲区,数据必然要存两份,造成不必要的浪费,效率不高

?

当调用ByteBuffer.allocateDirect()方法时,意味着会在操作系统中划分一块缓冲区,但是这块缓冲区不同的是,java系统可以访问到这块内存,那加入直接内存后,磁盘文件读取的时候,直接读取到直接内存,而java代码也可以读取到,少了一次数据的拷贝操作。?


内存溢出

既然直接内存不受jvm管理,会不会导致内存溢出呢

?执行代码,我们发现会有内存的溢出

?释放原理

我们执行程序,发现该程序占用了1G的内存?

?

我们发现置位null之后,内存占用变少,说明回收掉了

分配和回收原理

  • 使用了Unsafe对象完成直接内存的分配回收,并且回收需要主动freeMemory方法
  • ByteBuffer的实现类内部,使用了Cleaner(虚引用)来监测ByteBuffer对象,一旦ByteBuffer对象被垃圾回收,那么就会由ReferenceHandler线程通过Cleaner的clean方法调用freeMemory来释放直接内存。

?禁用System.gc() ==> 显示的进行垃圾回收

触发的是FullGC,即也会回收老年代的垃圾

?

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-13 21:36:26  更:2022-03-13 21:39:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:44:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码