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

Linux内核修改内存分配策略

今天遇到了如下的内核报错

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f0e1e06c000, 65536, 1) failed; error='Cannot allocate memory' (errno=12)

这个报错是因为,linux会对大部分的内存资源申请都回复允许,以便于运行更多的程序。但是有些程序申请完内存后并不一定会立马使用,会持久化占用不释放,导致后续的服务,linux没有足够的内存提供给它,就会出现上面这个错误,这就叫做overcommit。这种程序常见的比如oracle的监控、hiveserver等这种持久化的程序

这个错误的解决方法除了加成本怼内存之外可以修改内存的分配策略,使得如果内存到了一定程度就直接拒绝了

策略修改在/etc/sysctl.conf文件中的vm.overcommit_memory配置项,它允许0到1三个配置

0:内核首先会检查是否有足够的内存分配,如果没有就反馈申请失败,也就是cannot allocate memory的出现,这是默认配置
1:内核允许超量使用内存直到内存用完为止
2:表示内核绝不允许超量使用内存,即分配出去的内存空间不能超过swap+50%的服务器总内存值

你也可以快捷修改

echo 0 > /proc/sys/vm/overcommit_memory
echo 50 > /proc/sys/vm/overcommit_ratio
sysctl -p
http://www.lryc.cn/news/513259.html

相关文章:

  • 六大亮点解析:AI视频监控助力部队训练安全管理
  • 【从零开始入门unity游戏开发之——C#篇33】C#委托(`Delegate`)和事件(`event` )、事件与委托的区别、Invoke()的解释
  • 大数据与机器学习(它们有何关系?)
  • 深入浅出 Spring(一) | Spring简介、IOC理论推导、快速上手 Spring
  • IDEA 社区版 SpringBoot不能启动
  • 职场常用Excel基础01-数据验证
  • 活动预告 |【Part1】Microsoft Azure 在线技术公开课:数据基础知识
  • RabbitMQ - 1 ( 7000 字 RabbitMQ 入门级教程 )
  • Docker Compose 构建 EMQX 集群 实现mqqt 和websocket
  • Spring 过滤器:OncePerRequestFilter 应用详解
  • 3.CSS字体属性
  • 微信小程序 单选多选radio/checkbox 纯代码分享
  • k8s 部署meilisearch UI
  • gitlab 还原合并请求
  • ChatGPT最新版本“o3”的概要
  • uniapp——App下载文件,保存、打开文件(二)
  • Postman接口测试05|实战项目笔记
  • 【paddle】初次尝试
  • 01-2023年上半年软件设计师考试java真题解析
  • 一文讲清楚CSS3新特性
  • 系统设计案例:设计 Spotify
  • 太速科技-633-4通道2Gsps 14bit AD采集PCie卡
  • 图片叠加拖拽对比展示效果实现——Vue版
  • 结合长短期记忆网络(LSTM)和无迹卡尔曼滤波器(UKF)的技术在机器人导航和状态估计中的应用前景
  • 【MATLAB APP Designer】小波阈值去噪(第一期)
  • ClickHouse副本搭建
  • K3知识点
  • cocos creator 3.x版本如何添加打开游戏时首屏加载进度条
  • Fama MacBeth两步法与多因子模型的回归检验
  • IDEA 搭建 SpringBoot 项目之配置 Maven