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

优化CPU占用率及内存占用2

在标准化无线通信板时,关注过程序占用ram的问题,当时 发现每一个线程都会分配8M栈空间,这次换rk3568后,偶尔看了下RAM占用,吓了一跳,不但每个线程有8M栈空间,几乎每个线程都占用了64MB的一个RAM未知空间,如下:

网上找了很多资料,也没弄清楚,我综合分析了下,猜了个大概,不一定确定。

Linux早期的堆分配与回收由Doug Lea实现,但它在并行处理多个线程时,会共享进程的堆内存空间。因此,为了安全性,一个线程使用堆时,会进行加锁。然而,与此同时,加锁会导致其它线程无法使用堆,降低了内存分配与回收的高效性。同时,如果在多线程使用时,没能正确控制,也可能引起内存分配和回收的正确

为了解决上述问题, globc-2.3.x之后,glibc中继承了ptmalloc2,堆会提前分配空间,每一个线程分配64MB空间,malloc会直接在此64MB空间内分配。提高速度、效率。

这种机制在多线程竞争锁激烈的场景下会带来一个问题:非主分配区开辟越来越多,因为它一旦开辟了就不会释放,一个分配区就是64MB。

 在ptmalloc机制下,每个进程都有一个内存主分配区Main_arena和若干个非主分配区thread_arena,

http://www.lryc.cn/news/358836.html

相关文章:

  • C语言(字符和字符串函数)2
  • 【数据结构与算法 | 栈篇】力扣20,150
  • node依赖安装的bug汇总
  • Python中的 Lambda 函数
  • 服务器遭遇黑洞后如何快速恢复与防范
  • GPT-4o有点坑
  • 【机器学习】探索未来科技的前沿:人工智能、机器学习与大模型
  • OceanBase 4.3.0 列存引擎解读:OLAP场景的入门券
  • 算法每日一题(python,2024.05.25) day.7
  • 【正在线上召开】2024机器智能与数字化应用国际会议(MIDA2024),免费参会
  • 景源畅信:抖音的爆款视频怎么选?
  • 开源大模型源代码
  • 算法思想总结:哈希表
  • 基于Docker搭建属于你的CC++集成编译环境
  • 如何限制上网行为?上网行为管控软件有什么功能?
  • 重庆耶非凡科技有限公司的选品师项目靠谱吗?
  • 基于Cloudflare/CloudDNS/GitHub使用免费域名部署NewBing的AI服务
  • redux状态管理用法详解
  • 细说ARM MCU中的MX_GPIO_Init()函数的实现过程
  • 【wordpress】网站提示Error establishing a database connection错误代码
  • 图书管理系统——Java实现
  • Capto 标准版【简体中文+Mac 】
  • 连锁收银系统的五大功能 会员营销是核心
  • 射频功率限幅器简略
  • [备忘] Reboot Linux in python
  • windows打开工程文件是顺序读写吗
  • 【Python】解决Python报错:AttributeError: ‘generator‘ object has no attribute ‘xxx‘
  • 【1800】【5.22-5.24】
  • 统计各个商品今年销售额与去年销售额的增长率及排名变化
  • 华为校招机试 - 矿车运输成本(20240522)