Direct buffer OutOfMemoryError

简介: Direct buffer OutOfMemoryError

既然Direct memory是物理内存,那么是不是不受限制呢,这个肯定不是的。

我们来一段程序:

public class Jvm1_10 {
    static int _10M=1024*1024*10;
    public static void main(String[] args) {
        List<Buffer>  list=new ArrayList<>();
        int i=0;
        try{
            while (true){
                ByteBuffer byteBuffer=ByteBuffer.allocateDirect(_10M);
                list.add(byteBuffer);
                i++;
            }
        }finally {
            System.out.println(i);
        }
    }
}

执行结果:

364
Exception in thread "main" java.lang.OutOfMemoryError: Direct buffer memory
  at java.nio.Bits.reserveMemory(Bits.java:694)
  at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
  at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
  at Jvm1_10.main(Jvm1_10.java:19)

这个结果表明程序分配了364次,就内存溢出了,这说明我们程序是有控制的。我们加入代码:

System.out.println("maxDirectMemorym默认大小"+ VM.maxDirectMemory()/1024/1024+"MB");

输出:maxDirectMemorym默认大小3641MB

这个便是我们的默认配置,我们可以通过jvm参数控制这个默认值

-XX:MaxDirectMemorySize=20m

maxDirectMemorym默认大小20MB
2
Exception in thread "main" java.lang.OutOfMemoryError: Direct buffer memory
  at java.nio.Bits.reserveMemory(Bits.java:694)
  at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
  at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:311)
  at Jvm1_10.main(Jvm1_10.java:20)


目录
相关文章
|
存储 缓存 自然语言处理
Elasticesearch内存详解
Elasticesearch内存详解总结文章
5179 0
Elasticesearch内存详解
|
消息中间件 Java 大数据
【真实生产案例】SpringBoot 整合 Kafka 实现数据高吞吐
在上篇文章中,我们详细的介绍了 kafka 的架构模型,在集群环境中,kafka 可以通过设置分区数来加快数据的消费速度。 光知道理论还不行,我们得真真切切的实践起来才行! 下面,我将结合生产环境的真实案例,以SpringBoot技术框架为基础,向大家介绍 kafka 的使用以及如何实现数据高吞吐!
4303 1
|
6月前
|
人工智能 监控 API
如何选择大模型服务商
小马算力(TokenPony)提供统一API接入全球主流模型,支持快速调用、高性价比与企业级稳定服务。无需多厂商对接,告别供应商锁定,自建先进算力集群,兼容OpenAI格式,助力开发者高效集成,实现成本与性能最优。
595 0
|
12月前
|
存储 SQL 运维
中国联通网络资源湖仓一体应用实践
本文分享了中国联通技术专家李晓昱在Flink Forward Asia 2024上的演讲,介绍如何借助Flink+Paimon湖仓一体架构解决传统数仓处理百亿级数据的瓶颈。内容涵盖网络资源中心概况、现有挑战、新架构设计及实施效果。新方案实现了数据一致性100%,同步延迟从3小时降至3分钟,存储成本降低50%,为通信行业提供了高效的数据管理范例。未来将深化流式数仓与智能运维融合,推动数字化升级。
636 0
中国联通网络资源湖仓一体应用实践
|
Java Maven
关于The POM for xxxxxx:jar:s missing, no dependency information avail 问题的解决
关于The POM for xxxxxx:jar:s missing, no dependency information avail 问题的解决
1271 1
|
搜索推荐 Android开发 UED
信息检索系统评估指标的层级分析:从单点精确度到整体性能度量
本文深入探讨了信息检索系统(如搜索引擎)的评估机制,从用户行为特征出发,设计了一系列量化指标以衡量搜索结果的相关性和有效性。核心内容包括精确度(Precision)、Precision@K(聚焦前K个结果)、Average Precision@K(考虑位置权重)以及MAP@K(系统整体性能评估)。通过实际案例分析,展示了如何用这些指标评估搜索系统的质量,并强调高质量系统需在多维度上表现优异,以契合用户真实需求和行为模式。文章为优化信息检索系统提供了科学指导框架。
669 7
信息检索系统评估指标的层级分析:从单点精确度到整体性能度量
|
10月前
|
设计模式 算法 Java
Java SE 与 Java EE 组件封装使用方法及实践指南
本指南详细介绍了Java SE与Java EE的核心技术使用方法及组件封装策略。涵盖集合框架、文件操作、Servlet、JPA、EJB和RESTful API的使用示例,提供通用工具类与基础组件封装建议,如集合工具类、文件工具类、基础Servlet、实体基类和服务基类等。同时,通过分层架构集成示例展示Servlet、EJB和JPA的协同工作,并总结组件封装的最佳实践,包括单一职责原则、接口抽象、依赖注入、事务管理和异常处理等。适合希望提升代码可维护性和扩展性的开发者参考。
366 0
|
SQL 分布式计算 HIVE
sparksql 参数调优
sparksql 参数调优
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的校园快递代取系统附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的校园快递代取系统附带文章和源代码部署视频讲解等
409 0