当前位置: 首页 > news >正文

JVM笔记(8)—— 直接内存

一、什么是直接内存

直接内存不是虚拟机运行时数据区的一部分,是在运行时数据区外、直接向系统申请的内存空间。

通常,访问直接内存的速度会优于堆,读写性能更好。因此,出于性能考虑,读写频繁的场合可能会考虑使用直接内存。Java的NIO库允许Java程序使用直接内存,用于数据缓冲区。

普通IO写需要从用户缓存空间copy到内核缓存空间再copy到磁盘(读就是反过来),而NIO是直接与磁盘进行交互,因此速率更快,适合对大文件的读写操作。

二、直接内存的简单使用

1. 使用ByteBuffer.allocateDirect()方法

    public static void main(String[] args) {//申请直接内存ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024*1024*1024);System.out.println("内存分配完毕");Scanner scanner = new Scanner(System.in);scanner.next();System.out.println("直接内存开始释放");byteBuffer = null;System.gc();scanner.next();}

2. 使用Unsafe对象的allocateMemory()方法

ByteBuffer.allocateDirect()方法内部也是通过Unsafe对象的allocateMemory()方法来分配内存的。

    public static void unSafeTest() throws IllegalAccessException {//无法使用,其内部通过判别当前类加载器限制了这个方法的调用
//      Unsafe unsafe = Unsafe.getUnsafe();//通过反射构造unsafe对象Field unsafeField = Unsafe.class.getDeclaredFields()[0];unsafeField.setAccessible(true);Unsafe unsafe = (Unsafe)unsafeField.get(null);int count = 0;while (true) {unsafe.allocateMemory(1024*1024*1024);System.out.println(++count);}}

三、直接内存的大小设置与内存溢出

直接内存可通过MaxDirectMemorySize设置,如果不指定,则默认与堆的-Xmx参数值一致。

使用时若超出最大内存则会抛出OutOfMemoryError。

四、直接内存的回收

直接内存不受JVM内存管理,分配和回收成本较高。

直接内存不受gc控制,是通过虚引用和引用计数判断,gc时若发现无引用,则通知系统直接内存可以垃圾回收了,然后这里具体垃圾回收由操作系统来处理。

相关文章:

JVM笔记(8)—— 直接内存

一、什么是直接内存 直接内存不是虚拟机运行时数据区的一部分,是在运行时数据区外、直接向系统申请的内存空间。 通常,访问直接内存的速度会优于堆,读写性能更好。因此,出于性能考虑,读写频繁的场合可能会考虑使用直…...

Unity性能优化:如何优化Drawcall

前言 降低游戏的Drawcall,是渲染优化很重要的手段,接下来从以下4个方面来分析如何降低DrawCall: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀 降低Drawcall的意义是什么?如何查看游戏的Drawca…...

类与对象(this 关键字、构造器)

目录一、面向对象二、类与对象三、对象内存图四、成员变量和局部变量区别五、this关键字六、构造器/构造方法一、面向对象 一种编程思想:也就是说我们要以何种思路,解决问题,以何种形式组织代码 当解决一个问题的时候,面向对象会把事物抽象成…...

[NOIP2002 普及组] 过河卒

题目描述: 棋盘上 A 点有一个过河卒,需要走到目标 B 点。卒行走的规则:可以向下、或者向右。同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。因此称之为“马拦过河卒”。 棋盘用坐标表…...

redis事务和锁机制

目录 事务定义 事务操作命令 redis事务的错误处理 redis事务冲突问题 redis解决事务冲突的方法 Redis事务的三个特性 事务定义 redis事务是一个单独的隔离操作:事务中的所有命令都会序列化,按顺序的执行。事务中在执行过程中,不会被其他客户…...

Java实例——线程

1、查看线程存活状态 Thread.isAlive() Thread.getName() public class MyThread extends Thread{Overridepublic void run() {for (int i 0; i < 10; i) {printMsg();}}public static void printMsg(){Thread thread Thread.currentThread();//Thread.getName() 获取线程…...

云计算学习课程——越来越重要的云安全

2023&#xff0c;越来越多的企业和组织正在或即将把核心系统和数据迁移上云端&#xff0c;其中以公有云和服务居多&#xff0c;那么就意味着在数据迁移的过程中会出现安全问题的几率更大。企业也越来越注重云安全体系&#xff0c;对我们云计算运维工程师来说&#xff0c;也是一…...

Android 高性能列表:RecyclerView + DiffUtil

文章目录背景介绍一般刷新 notifyDataSetChanged()局部刷新实现调用代码准备工作创建 MyDiffUtilCallback 类继承 DiffUtil.Callback 抽象类MyAdpter 类代码实现步骤总结通过 log 证实 diffutil 的局部刷新diffutil 优化后台线程参考主线程参考diff 更新优化后写法相关参考背景…...

为什么派生类的构造函数必须在初始化列表中调用基类的构造函数

调用派生类的构造函数时&#xff0c;可能会调用继承自基类的函数&#xff0c;也就可能会用到基类的数据成员&#xff0c;因此&#xff0c;调用派生类的构造函数时&#xff0c;必须确保继承自基类的数据成员已构造完毕&#xff0c;而将基类构造函数的调用写在初始化列表中&#…...

2023年2月初某企业网络工程师面试题【建议收藏】

拓扑图如下&#xff0c;主机A与主机B能互相通信&#xff0c;但是A不能ping通RA的F0接口&#xff0c;这是为什么&#xff1f;RA上f0接口上配置了ACL&#xff0c;禁止源ip为主机A&#xff0c;目的ip为RA f0的数据包的发送&#xff1b; 第一个路由器上只有到主机B网段的路由&#…...

分布式下(sso)单点登录

目录标题一、基于rediscookie的单点登录二、基于jwtcookie的单点登录一、基于rediscookie的单点登录 传统单机应用登录 传统单机应用&#xff0c;一般是结合session和cookie实现认证、授权。用户通过输入账号密码登录系统&#xff0c;登录成功后在系统创建一个session来保存用…...

PMP真的有那么厉害?你需要考PMP吗?

这个含金量是有的&#xff0c;是目前项目管理界含金量较高的证书&#xff0c;但也要分人&#xff0c; 因为这是职业证书&#xff0c;主要用于提高职场工作能力&#xff0c;不搞这一行的&#xff0c;PMP证书含金量再高也是一张废纸&#xff0c;可以看下下面这张图&#xff0c;这…...

高通平台开发系列讲解(WIFI篇)802.11 基本概念

文章目录 一、WLAN概述二、802.11发展历程三、802.11基本概念沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本文将基于高通平台介绍802.11基本概念。 一、WLAN概述 WLAN是Wireless Local Area Network的简称,指应用无线通信技术将计算机设备互联起来,构成可以互相通…...

扬帆优配|反弹涨超70%,昨收三连板,稀土行业或迎大事件

本年第一批稀土挖掘锻炼目标行将发放。 2月22日晚&#xff0c;东易日盛公告称&#xff0c;公司收到董事、副总经理兼财务总监李双侠出具的《关于未严格执行股份减持方案的致歉函》&#xff0c;其此次减持方案已施行结束&#xff0c;但在施行减持方案时&#xff0c;因操作失误&a…...

华为OD机试 - 工号不够用了(Java) | 机试题+算法思路+考点+代码解析 【2023】

工号不够用了 3020年,空间通信集团的员工人数突破20亿人,即将遇到现有工号不够用的窘境。 现在,请你负责调研新工号系统。继承历史传统,新的工号系统由小写英文字母(a-z)和数字(0-9)两部分构成。新工号由一段英文字母开头,之后跟随一段数字,比如"aaahw0001&qu…...

Python学习-----lambda式匿名函数

目录 前言&#xff1a; 1.什么是lambda函数 2.使用示例 &#xff08;1&#xff09;示例1&#xff1a;与def对比 &#xff08;2&#xff09;示例2&#xff1a;与三目运算符 &#xff08;3&#xff09;示例3&#xff1a;lambda作为参数传入其他函数 &#xff08;4&#xff…...

华为OD机试真题Python实现【求解连续数列】真题+解题思路+代码(20222023)

求解连续数列 题目 已知连续正整数数列{K}=K1,K2,K3… Ki的各个数相加之和为S, i = N (0 < S < 100000, 0 < N < 100000), 求此数列K。 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 输入包含两个参数 连续正整数数…...

每日学术速递2.22

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.PriSTI: A Conditional Diffusion Framework for Spatiotemporal Imputation 标题&#xff1a;PriSTI&#xff1a;时空插补的条件扩散框架 作者&#xff1a;Mingzhe Liu, Han Huan…...

postgresql 数据库 主从切换 测试

postgresql 数据库 主从切换 测试 文章目录postgresql 数据库 主从切换 测试前言环境&#xff1a;主从切换1. 查看数据库状态&#xff1a;2. 备库切换主库3. 旧主库切换成备库&#xff1b;4 查看状态后记前言 因数据库等保需要&#xff0c;需要对老系统的数据库进行主从切换来…...

干旱预测方法总结及基于人工神经网络的干旱预测案例分析(MATLAB全代码)

本案例采用SPEI干旱指数&#xff0c;构建ANN和BP神经网络预测模型&#xff0c;并开展1~3个月预见期的干旱预测&#xff0c;对比分析干旱预测模型的适用性&#xff0c;为流域干旱预警和管理提供技术依据。 干旱预测 1 干旱预测方法 1.1 统计学干旱预测 根据历史降水或气温等…...

OpenClaw+千问3.5-9B翻译工作流:PDF双语对照生成

OpenClaw千问3.5-9B翻译工作流&#xff1a;PDF双语对照生成 1. 为什么需要自动化翻译工作流 去年我在研究区块链共识算法时&#xff0c;遇到一个棘手问题&#xff1a;大量前沿论文只有英文版本。手动复制PDF内容到翻译工具&#xff0c;再粘贴回文档排版&#xff0c;不仅效率低…...

注重自己的感受 您的感受才是衡量一切的标准

人这一辈子&#xff0c;最拖垮你的&#xff0c;从来不是没钱、没机会、没天赋&#xff0c;是刻在骨子里的 “模糊感”。你肯定有过这种时刻&#xff1a;睡前刷了两小时手机&#xff0c;看别人搞副业月入五位数就热血沸腾&#xff0c;看别人裸辞环游世界就心潮澎湃&#xff0c;看…...

Gephi新手必看:如何用Excel表格快速创建你的第一个社交网络图

Gephi新手必看&#xff1a;如何用Excel表格快速创建你的第一个社交网络图 第一次打开Gephi时&#xff0c;那些复杂的界面和术语可能会让你望而却步。但别担心&#xff0c;就像用Excel做表格一样简单&#xff0c;我们完全可以用最熟悉的电子表格来构建专业的社交网络图。想象一下…...

TOPMAX嵌入式Top-N最大值追踪库详解

1. TOPMAX库概述&#xff1a;嵌入式系统中的Top-N最大值追踪引擎TOPMAX是一个专为资源受限嵌入式平台设计的轻量级Arduino库&#xff0c;其核心功能是实时、高效地维护一个动态数据流中的前N个最大值。该库并非简单的排序容器&#xff0c;而是一种经过工程优化的“滑动窗口最大…...

保姆级教程:用QGroundControl地面站V4.2.0连接Gazebo模拟无人机(附避坑指南)

从零到一&#xff1a;QGroundControl地面站与Gazebo无人机仿真全流程实战 无人机仿真技术已经成为开发者快速验证算法、学生入门飞控系统的首选方案。相比真机测试&#xff0c;仿真环境不仅成本低廉&#xff0c;还能避免硬件损坏风险。本文将手把手带你完成QGroundControl地面站…...

Soundpad 免安装绿色版 下载 游戏语音与直播的专业音效播放神器

简介说明 Soundpad&#xff1a;游戏语音与直播的专业音效播放神器 Soundpad 是由德国独立开发者 Leppsoft 推出的 Windows 平台专业音效板&#xff08;Soundboard&#xff09;软件&#xff0c;核心功能是将本地音频文件实时混入麦克风信号&#xff0c; 在语音聊天、游戏内语音…...

基于OpenCV的航天器自主对接算法原型

南加州大学SURE项目学生开发算法原型&#xff0c;助力航天器对接自动化 作为在新泽西州长大、并在加拿大就读寄宿学校的学生&#xff0c;Derek Chibuzor年少时经常乘坐飞机。这段旅行经历激发了他对飞行的持久兴趣。进入南加州大学后&#xff0c;Chibuzor选择主修航空航天工程。…...

Linux性能调优工具全景解析与实战指南

1. Linux性能调优工具全景图解析作为一名在Linux系统管理领域摸爬滚打多年的老手&#xff0c;我深知性能调优是系统管理员和开发者的必修课。今天我要分享的这组工具图谱&#xff0c;可以说是Linux性能分析的"九阳真经"。这些图表最初由Brendan Gregg等性能专家整理&…...

前后端分离大创管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着信息技术的快速发展&#xff0c;高校创新创业项目&#xff08;大创&#xff09;管理逐渐向数字化、智能化方向转型。传统的管理模式依赖纸质文档和人工操作&#xff0c;效率低下且容易出错&#xff0c;难以满足日益增长的项目申报、评审和进度跟踪需求。大创管理系统旨…...

【优化轨迹】基于融合粒子群算法的纤维置换机械臂轨迹优化附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f447; 关注我领取海量matlab电子书和数学建模资料&#x1f34a;个人信条&#xff1a;格物致知,完整Matl…...