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)


目录
相关文章
|
消息中间件 Java 大数据
【真实生产案例】SpringBoot 整合 Kafka 实现数据高吞吐
在上篇文章中,我们详细的介绍了 kafka 的架构模型,在集群环境中,kafka 可以通过设置分区数来加快数据的消费速度。 光知道理论还不行,我们得真真切切的实践起来才行! 下面,我将结合生产环境的真实案例,以SpringBoot技术框架为基础,向大家介绍 kafka 的使用以及如何实现数据高吞吐!
4410 1
|
10月前
|
人工智能 监控 API
如何选择大模型服务商
小马算力(TokenPony)提供统一API接入全球主流模型,支持快速调用、高性价比与企业级稳定服务。无需多厂商对接,告别供应商锁定,自建先进算力集群,兼容OpenAI格式,助力开发者高效集成,实现成本与性能最优。
770 0
|
8月前
|
JSON fastjson 数据处理
JSON转Map
该代码段演示了如何使用Fastjson将JSON字符串转换为Map对象。通过`JSONObject.parse()`方法解析JSON字符串,并强制转换为Map类型,便于后续数据处理与访问。
|
机器学习/深度学习 人工智能 自然语言处理
2025年AI客服机器人推荐:核心能力与实际场景应用分析
据《2024年全球客户服务机器人行业研究报告》预测,2025年全球AI客服机器人市场规模将超500亿美元,年复合增长率达25%以上。文章分析了主流AI客服机器人,如合力亿捷等服务商的核心功能、适用场景及差异化优势,并提出选型标准,包括自然语言处理能力、机器学习能力、多模态交互能力等技术层面考量,以及行业适配性、集成能力、数据安全、可定制化程度和成本效益等企业维度评估。
890 12
|
SQL 分布式计算 HIVE
sparksql 参数调优
sparksql 参数调优
|
存储 JSON Prometheus
SpringBoot动态修改日志级别
SpringBoot动态修改日志级别
1332 0
SpringBoot动态修改日志级别
|
Java Spring 容器
No qualifying bean of type ‘java.lang.String‘ available: expected at least 1 bean which qualifies
No qualifying bean of type ‘java.lang.String‘ available: expected at least 1 bean which qualifies
1707 0
No qualifying bean of type ‘java.lang.String‘ available: expected at least 1 bean which qualifies
|
监控 安全 算法
在Linux中,cpu使用率过高可能是什么原因引起的?排查思路是什么?
在Linux中,cpu使用率过高可能是什么原因引起的?排查思路是什么?
|
安全 NoSQL Shell
PWN入门必读
PWN入门必读
1064 6
|
存储 负载均衡 算法
FastDFS介绍-2
FastDFS介绍
648 1