首页 > 系统相关 >【项目实战】NIO 与 直接内存 (Direct Memory),由JVM直接管理,而不是通过垃圾回收器来管理,容易造成内存泄漏`OutOfMemoryError`

【项目实战】NIO 与 直接内存 (Direct Memory),由JVM直接管理,而不是通过垃圾回收器来管理,容易造成内存泄漏`OutOfMemoryError`

时间:2024-09-12 12:49:25浏览次数:11  
标签:Java NIO Direct 传输 内存 Memory 直接 垃圾

一、技术概览

1.1 定义

直接内存,Direct Memory。
直接内存,是指位于Java堆外的一块内存区域。
直接内存,由JVM直接管理,而不是通过垃圾回收器来管理。
直接内存,可以通过Java的ByteBuffer.allocateDirect()方法创建。
直接内存,可以提高数据传输效率,特别是当数据需要频繁地在网络间传输或与本地代码交互时。

1.2 专业术语定义

  • Buffer: 用于存储数据的对象,是NIO中的基本单位。
  • ByteBuffer: 一种特殊的Buffer,用于处理字节数据。
  • Heap Memory: Java堆内存,由垃圾回收器管理。

1.3 优点和缺点

优点:

  • 性能提升: 直接内存可以提高数据传输效率,特别是在与本地代码交互或在网络间传输大数据量的情况下。
  • 减少复制: 由于数据可以直接在堆外内存与本地代码或网络间传输,减少了数据复制的次数,提高了效

标签:Java,NIO,Direct,传输,内存,Memory,直接,垃圾
From: https://blog.csdn.net/wstever/article/details/137431662

相关文章

  • `FULL JOIN` 和 `UNION ALL`
    在SQL中,`FULLJOIN`和`UNIONALL`是两种不同的操作,它们的结果也有显著的区别。###FULLJOIN`FULLJOIN`(全外连接)会返回两张表中所有的记录。对于没有匹配的记录,结果中会用`NULL`填充缺失的部分。具体来说:-如果表A和表B中有匹配的记录,这些记录会合并在一起。-如果......
  • MySQL学习笔记(二)InnoDB内存模型与磁盘同步机制
    InnoDB存储引擎ACID是我们在数据库设计的时候,尽可能的去满足的设计原则。A原子性、C一致性I隔离性D持久性,其中InnoDB存储引擎就是满足了我们ACID设计原则的。内存缓存结构(BufferPool)如果每次获取数据都去磁盘获取,这样效率明显比较慢。所以innoDB为了性......
  • 整数和浮点数在内存中储存
    1.整数的储存在生活中,我们通常运用十进制计数。而在计算机数据在内存中是以二进制的方式存储。1).整数的存储方式整数的2进制表示方法有三种,即原码、反码和补码 有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,最高位的⼀位是被......
  • 内存延迟对Zen5游戏性能影响有多大!为何首发评测我们会用技嘉X670E AORUS XTREME主板
    一、前言:为什么我们会一直使用技嘉X670E主板做锐龙处理器首发评测很多同学一直好奇,为什么我们在各种锐龙平台的评测中都会优先使用技嘉X670主板?也有同学很疑惑,为什么海外媒体的游戏性能测试,锐龙79700X连i7-14700K都打不过,而在我们这里却与i9-14900K旗鼓相当?主要原因是Zen5架构......
  • 内存屏障简介
    内存屏障编译乱序异步场景中,经常使用多线程一起处理任务并且通过一个共享变量进行状态的共享,如下,function2在请求data数据时通过status判断数据是否就绪,function1准备数据完成后修改status。boolstatus=false;chardata[50]="Hello";voidfunction1(){strcp......
  • C# WebSocket Fleck 内存泄漏
    最近在维护公司旧项目,内存泄漏严重,找了行业内大佬帮忙分析Dump文件(windbg我不擅长),大佬指出问题在于Fleck,这里记录一下。整理一下问题:1.大佬指出System.Threading.Tasks.ContinuationTaskFromTask和System.ObjectDisposedException有71完个对象。2.System.ObjectDisposedE......
  • C语言的数据在内存中的存储
    在之前的二进制及其相关操作符与结构体内存对齐两篇文章中,我们已经对二进制数,原码反码补码进行了浅层的了解,并且也知道了高低地址以及高低字节的区别,那么既然知道了这些基础知识,就让我们借助这一层台阶,继续往更高的地方(数据在内存中的存储)大迈步吧~一、二进制数日常生活中......
  • 项目-高并发内存池
    本篇文章,和大家分享和一些和项目相关的知识。本次的内容主要是模拟实现一个高并发内存池。项目介绍我们这个项目的原型是google的tcmalloc,tcmalloc的全称是Thread-CachingMalloc。我们之前使用的malloc,free,本身就是一个内存池,只不过google的这个在多线程方面更高效。那我们是不......
  • C语言:数据在内存中的存储
    一.整数在内存中的存储首先,在讲解操作符的时候,我们就已经知道了,对于整形来说:数据存放内存中其实存放的是补码。并且我们也知道补码是整数的2进制表示方法之一。整数的2进制表示方法有三种,即原码、反码和补码有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用......
  • Active Directory Server Build
    ActiveDirectoryServerBuildDocument Preparedfor:LeanDevelopmentPtyLtd 5.ComputerSettings1.2.3.4.5.5.1.GeneralSettingsGeneralsettingsasrecordedin‘ControlPanel/System’arepresentedbelow:<Inserttherequiredserverscreenshotth......