暂无图片
共享内存被覆盖导致启动失败问题
我来答
分享
手机用户1858
2020-09-23
共享内存被覆盖导致启动失败问题

配置文件中明确不让修改SHMBASE=0x44000000L,但是3中的参数SHMVIRTSIZE设为20G,SHMADD和EXTSHMADD也对应增加后(为了处理1的问题),发现Gbase会将我们应用的共享内存覆盖掉,导致进程启动失败,这是为什么?将SHMBASE=0x66000000L改为后,现在看没有覆盖我们的共享内存(注:应用的共享内存大小不超过2G),但是是否会有其他的问题?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
手机用户1858

共享内存的分配应该是连续的,因此在配置共享的内存基址(SHMABASE)的时候能够确保能够找到一块连续内存空间,否则不能按照需求获取足够大的内存空间使用(即使有内存,也不能被Gbase有效利用)。
如果可用内存小于设置的初始化内存大小造成Gbase启动失败。如果启动成功,如果内存不连续,会造成Gbase实际使用的内存受限;
SHMBASE的配置需要考虑操作系统的的内存使用情况。
如下图所示:
1)内存是向上扩展的2)我们如果选择0X10000000作为基址,最大空间只能利用到0x4000000,可利用0x30000000
2)如果选择0x30000000作为基址,最大空间也只能利用到0x4000000,可利用0x10000000
3)如果选择0x45000000作为基址,我们可以利用的空间为上面所有的空间;

暂无图片 评论
暂无图片 有用 0
手机用户1858
升级问题到: 一般问题
暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏