Direct buffer memory:主要应NIO引起的。

原因:

Java8出现了NIO,缓存,通道,选择器。在 写NIO程序的时候,经常使用ByteBuffer来读或者写入数据,这是一种基于通道( Channel)与缓冲区( Buffer)的I/0方式.它可以使用 Native函数库直接分配堆外内存,然后通过一个存做在Java里面的 DirectByteBuffer对作为这块内存的引用进行操作。可以提高性能,因为避免了在Java堆和 Native堆中来回复制数据。

ByteBuffer. allocate(capability)第一种方式是分配java堆内存,属于GC管理范围,由于需要进行拷贝,所以比较慢。
    ByteBuffer. allocteDirect (capability)第一种方式是分配操作系统的本地内存,不属于GC管辖范围,由于不需要内存拷贝所以速度相对较快。但如果不断分配本地内存,堆内存很少使用,那么java虚拟机就不需要进行GC, DirectByteBuffer对象们就不会被回收,这个时候堆内存充足,但本地内存可能已经使用光了,在尝试分配本地内存就会出0ut0fMemory Error,那程序就直接奔溃了。

模拟案例:


public class ChaneDemo {public static void main(String[] args) {System.out.println("maxDirectMemorym默认大小"+VM.maxDirectMemory()/1024/1024+"MB");//分配最大本地内存是1000000MBByteBuffer byteBuffer = ByteBuffer.allocateDirect(1000000 * 1024 * 1024);}}

Direct buffer memory相关推荐

  1. 【Flink】Direct buffer memory taskmanager.memory.task.off-heap.size

    文章目录 1.场景1 1.1 概述 2.场景2 1.场景1 1.1 概述 Direct buffer memory. The direct out-of-memory error has occurr ...

  2. 项目报Direct buffer memory错误

    前言 最近项目中出现了Direct buffer memory,然后搜寻网上的资料,大部分的解决方案如下: 网上的解决方案 最近基于Netty的NIO做应用底层通讯架构的实现(服务发现,分布式,高可用 ...

  3. 【Kafka】kafka OutOfMemoryError: Direct buffer memory Java heap space

    1.背景 做实验:[Kafka]Kafka如何开启SSL 控制台消费与生产 代码消费与生产 的时候,因为机器太卡导致内存溢出 java.lang.OutOfMemoryError: Direct bu ...

  4. jvm性能调优实战 -54Jetty NIO机制导致堆外内存溢出Direct buffer memory OOM

    文章目录 Pre 案例 故障分析 关于解决OOM问题的底层技术修为的一点建议 堆外内存是如何申请的,又是如何释放的? 为什么会出现堆外内存溢出的情况? 真正的堆外内存溢出原因分析 Java NIO有这 ...

  5. 【Flink】Flink报错OutofMemoryError : Direct buffer memory

    文章目录 1.背景 3.源码分析 2.场景2 2.1 概述 3.场景3 3.1 概述 M.参考 1.背景 错误如下

  6. java allocatedirect_Java中的Heap Buffer与Direct Buffer

    在使用Java NIO时,会经常和ByteBuffer打交道(吐槽下,每次手动flip切换读写模式太不友好).在空Buffer创建时,有两种方式: ByteBuffer.allocateDirect( ...

  7. JAVA NIO之Direct Buffer 与 Heap Buffer的区别?

    2019独角兽企业重金招聘Python工程师标准>>> 个人总结 Direct Buffer  vs.  Heap Buffer 1. 劣势:创建和释放Direct Buffer的代 ...

  8. kafka buffer.memory参数入门

    buffer.memory Kafka的客户端发送数据到服务器,不是来一条就发一条,而是经过缓冲的,也就是说,通过KafkaProducer发送出去的消息都是先进入到客户端本地的内存缓冲里,然后把很多 ...

  9. java direct memory_第一讲  JVM内存四大类型:Heap,Stack,Contant,DirectMemory等

    第一讲JVM内存四大类型:Heap,Stack,Contant,DirectMemory等 Stack属于栈的区域,属于每条线程私有的. 方法区和本地方法栈有很大的不同,方法区是用Java级别角度做的 ...

最新文章

  1. 睡个好觉的 12 条军规
  2. 1015 德才论 (25分)
  3. [环境] OpenAI gym经典控制环境CartPole-v0 介绍
  4. Mac IDEA解决Maven项目命令行报错:command not found: mvn
  5. neo4j remove
  6. Node.js学习入门
  7. Flink CDC + Hudi + Hive + Presto 构建实时数据湖最佳实践
  8. vmware虚拟机安装jdk
  9. JAVA汉字转拼音工具类
  10. 网页中人民币符号的正确输入姿势
  11. python 保存数据为excel
  12. 软件配置---重装系统---品牌电脑重启快捷键表
  13. 季冠携“闪星服务”受邀参加2021连锁企业轻资产论坛
  14. 海外时事热点|两轮车租赁模式再度升级
  15. C++ 强制类型转换操作符(static_cast、dynamic_cast、const_cast和reinterpret_cast)
  16. Java的IO流之File类
  17. MySQL 之 扩展例子
  18. 【腾讯Bugly干货分享】Android 进程保活招式大全
  19. Android股票K线图
  20. opencv入门之数米粒

热门文章

  1. word嵌入对象依损坏_word的操作问题.
  2. ubuntu连不上网
  3. 请问谁有钢结构CAD详图深化教程
  4. vue3返回顶部组件(丝滑)
  5. Dos命令关机、重启
  6. 微信公众号自定义二维码关注后自动为粉丝分组
  7. 第一章 Elastic Stack入门
  8. 2021-06-03 wms软件如何规划仓库管理工作?
  9. Docker学习第二天-容器
  10. 使用selenium编写一个斗鱼弹幕机器人,进行封装成exe程序