Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1795547
  • 博文数量: 306
  • 博客积分: 3133
  • 博客等级: 中校
  • 技术积分: 3932
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-19 16:50
文章分类

全部博文(306)

文章存档

2018年(7)

2017年(18)

2016年(39)

2015年(35)

2014年(52)

2013年(39)

2012年(22)

2011年(29)

2010年(53)

2009年(12)

分类: LINUX

2011-07-29 16:43:38

gcc有一个自己的内存管理器来管理内存的分配和重用。ggc-min-heapsize和ggc-min-expand这两个参数控制着这个内存 管理器的行为。当分配的内存超过ggc-min-heapsize时候,旧的内存就会被回收。而ggc-min-expand指定了每次内存分配的最小增 长率。简单地说,当前的heap,增加ggc-min-expand%,如果超过ggc-min-heapsiz,则进行内存回收操作。

ggc-min-heapsize的值越大,编译花在内存分配上的时间就越小,所以,这个值越大,编译速度就很有可能得到提升。但是同时也会更多内存。

编译时候所需要的内存,一般来说是不需要太关注的。但是,如果希望在小设备上进行编译,这两个参数可能就会变得非常有用。虽然ggc-min- heapsize默认是实际内存的1/8,但是有时候,能使用的并不到1/8。这时候,就可以通过设置这个参数来以更小的内存进行编译。

设置这个参数的方式很多。例如通常的configure脚本,可以以CFLAGS的变量来设置。

root@com:~# CFLAGS=”$CFLAGS –param ggc-min-expand=0 –param ggc-min-heapsize=2048″ ./configure

另外顺便提一下mysql(5.0.89)的configure参数–with-low-memory。我本来以为也是用ggc-min-*来实现 的,但是看了实现之后,发现是设置了-fno-inline这个参数。很纳闷。根据我的理解,这个no-inline忽略函数的inline标志,也就是 说,inline的函数不会被展开到代码里。这虽然稍微减小了编译时候的内存操作,但是更多的是影响了生成的二进制的执行效率。不知道mysql为何如此 实现,而且在help的参数描述里,并未提到这一点。

阅读(5434) | 评论(0) | 转发(0) |
0

上一篇:输入子系统2

下一篇:VCC VDD VSS说明

给主人留下些什么吧!~~