AIX 5L 上的共享库内存占用
2008-11-10 08:28:28 来源:WEB开发网看起来上面四个库无法映射到共享段。因此,它们映射到私有段 0x3 中,该私有段供通过调用 mmap() 例程分配的任何通用内存使用。
有几种条件会强制共享库独立映射到 32 位 AIX 上:
共享段 0xd 中的空间不足(如上所述)。
共享库没有组或其他角色的执行权限。您可以指定 rwxr-xr-x 权限来更正此问题;但是,开发人员将希望使用私有权限(例如 rwx------),这样他们就不必在每次重新编译和为测试而部署共享库时运行 slibclean。
一些文档说明共享库是通过 nfs 加载的。
如果同一个库来自不同的位置,那么 AIX 内核甚至会将该库两次加载到共享内存中:
sj2e652a-chloe:~/e652_r>genkld | grep libcplib.so
d5180000 678c6 /space2/home/sj2e652a/e652_r/lib/libcplib.so
d1cf5000 678c6 /home/sj1e652a/xir2_r/lib/libcplib.so
处理错误
如果运行部署在不同目录中的 XIr2 的另一个实例,我们将看到进程占用内存有明显区别:
$ ps -e -o pid,vsz,user,comm | grep WIReportServer
28166 58980 jbrown WIReportServer
46968 152408 sj1xir2a WIReportServer
48276 152716 sj1xir2a WIReportServer
49800 152788 sj1xir2a WIReportServer
50832 152708 sj1xir2a WIReportServer
帐户“jbrown”的实例首先启动,然后启动帐户“sj1xir2a”的实例。如果我们要执行一些微小、存在风险的操作,例如在我们的 bobje/setup/env.sh 文件中的适当位置进行设置:
LIBPATH=~jbrown/vanpgaix40/bobje/enterprise115/aix_rs6000:$LIBPATH
更多精彩
赞助商链接