当前位置:  技术问答>linux和unix

100分!free后内存回收问题

    来源: 互联网  发布时间:2016-07-04

    本文导语:  诸位高手:   进程中malloc的内存,free后在只是在进程中标识内存可用而已,也就是可供当前进程malloc。   系统并未回收free掉的内存,那么怎么才能在进程中回收掉free的内存呢?可否实现? ...

诸位高手:
  进程中malloc的内存,free后在只是在进程中标识内存可用而已,也就是可供当前进程malloc。
  系统并未回收free掉的内存,那么怎么才能在进程中回收掉free的内存呢?可否实现?

|
呵呵 楼主想做的我知道  你可以采用我的方法。

1. linux glibc 2.7 使用brk 和  mmap 来获取 malloc用的内存

2. free掉的内存 当然不是立即还给操作系统  加入到glibc 自己维护的 fastbin 以待下次利用

3. 如果你要自己确保还给操作系统的话,自己直接take over 内存管理,用mmap 分配一大块内存 然后利用,最后不用时 unmap之。 (我就这样做过)

|

这个与系统的内存管理策略有关系。
现代操作系统一般用用分页的方式管理内存,为了提高性能,只有free引起整个页面都未使用,系统才会回收内存的;而且系统一般也不会马上回收,因为程序可能再次malloc()。
应用程序只要关注malloc与free匹配就好了,何时回收物理内存是系统的事。

|
一般情况下,你只要free了就可以,至于何时真正回收那是内核做的事
如果你在乎内存的立即回收,可能可以考虑自己做一个大的内存池

    
 
 

您可能感兴趣的文章:

  • linux下free命令显示的内存使用情况分析
  • 应用层malloc内存后,再free的话,内存不释放,而是在exit时释放,这个谁知道是怎么回事?
  • 可以用free来释放共享内存吗?
  • 最近程序老是在malloc或者free内存的时候崩溃或者失去响应,请教高手。
  • get_free_pages后获得的虚拟内存地址如何才能转换成物理地址?
  • getenv()返回的字符串所占的内存空间要不要用free释放
  • 和 new 对应的 删除某个变量所占内存的是什么?free? destory?...
  • 我用TOP查看linux的内存占用情况,发现used和buff每隔5秒就增加8Kb,free相应就少8Kb,这是为什么?
  • vmstat free项内存持续缓慢减少,什么应用都没开,什么原因啊?
  • C语言中多维数组的内存分配和释放(malloc与free)的方法
  • 在Linux上用C语言作了一个程序,程序中申请(malloc)了很大的内存,但是没free,当程序运行结束后,内存是否自动释放?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • free 和malloc的问题
  • free函数引发的问题
  • Free Java的初始设置问题----初学者求教.
  • 请教一个Free BSD的图形界面问题!
  • free bsd问题!高分!
  • not enough free disk space on /tmp,这个问题如何解决,(100分)
  • 问个__get_free_pages的问题
  • 关于FREE JAVA3.0的使用!菜鸟问题!!
  • free问题,麻烦大家给指点一下。代码在文章内容中
  • 编译问题 undefined reference to `mysql_free_result'
  • free()时出错,大家帮我看看代码哪里出问题了
  • 问题求教:内核启动时卡在Freeing init memory:
  • java命名空间java.sql接口array的类成员方法: free定义及介绍
  • 用gdb查错,发现一个由free引起的段错误,但我的代码(c++)中根本没有用到free啊?
  • java命名空间java.sql接口clob的类成员方法: free定义及介绍
  • 请问为什么会出现glibc detected *** free()?
  • java命名空间java.sql接口blob的类成员方法: free定义及介绍
  • free_irq为什么失败?
  • java命名空间java.sql接口sqlxml的类成员方法: free定义及介绍
  • XML编辑器 Serna Free
  • java命名空间javax.sql.rowset.serial类serialblob的类成员方法: free定义及介绍
  • Free Chart Geany
  • java命名空间javax.sql.rowset.serial类serialclob的类成员方法: free定义及介绍
  • double free or corruption(out)
  • java命名空间javax.swing.plaf.metal类metalscrollbarui的类成员方法: free_standing_prop定义及介绍
  • free出错
  • Avast Free Antivirus
  • 日志文件分析工具 Free-SA
  • Free Simple CMS
  • Free Simple Shop
  • ~~~~~在线~~~~哪位兄弟有FREE BSD界面结图我急需啊,谢谢


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3