|
楼主 |
发表于 2008-8-13 10:53:36
|
显示全部楼层
3G的虚拟地址空间还不够大吗?况且mmap出来的地址也在3G空间之内,有必要吗?
这个3G是否有出处?
而且我的内存是32M, FLASH 8M. 离3G太远。(也许这个帖子发这里并不合适。)
我本来的想法是用mmap来增加进程的额外的地址空间。原因是基于下面的一段英文引用。
With a process, the amount of virtual address space is fixed. Since there is only one stack, its size usually isn't a problem. With threads, however, the same amount of virtual address space must be shared by all the thread stacks. You might have to reduce your default thread stack size if your application uses so many threads that the cumulative size of their stacks exceeds the available virtual address space. On the other hand, if your threads call functions that allocate large automatic variables or call functions many stack frames deep, you might need more than the default stack size.
但是看不出来这样对增加内存有何种的好处,用mmap映射一个文件却可以完成IPC的工作,但那就是不是匿名映射的方式了
我这里使用mmap并非用其映射文件来做IPC的功能。
如果在linux用mmap方式增加空间,mmap大袋一个磁盘(flash)中的文件,影射后也占用系统内存空间,当内存不够的时候再换页出去。
这和直接在堆上开辟内存的性能开销是一样的。
堆应该是在里程的空间里的吧,而我是要增加进程的地址空间。
附件中的内存分布与现在程序的内存分布应该并没有太大变化吧? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|