WEB开发网
开发学院操作系统Linux/Unix AIX 5L 上的共享库内存占用 阅读

AIX 5L 上的共享库内存占用

 2008-11-10 08:28:28 来源:WEB开发网   
核心提示: 在启动第二个实例之前,我们将看到内存占用恢复正常了(我改用进程 boe_fcprocd,AIX 5L 上的共享库内存占用(9),因为在这项 LIBPATH 测试中无法启动 WIReportServer),$ ps -e -o pid,vsz,user,comm | grep boe_fcp

在启动第二个实例之前,我们将看到内存占用恢复正常了(我改用进程 boe_fcprocd,因为在这项 LIBPATH 测试中无法启动 WIReportServer)。

$ ps -e -o pid,vsz,user,comm | grep boe_fcprocd 
29432 65036  jbrown boe_fcprocd
35910 67596  jbrown boe_fcprocd
39326 82488 sj1xir2a boe_fcprocd
53470 64964 sj1xir2a boe_fcprocd

我们看到 procmap 显示文件按预期从 ~jbrown 加载:

53470 : /crystal/sj1xir2a/xir2_r/bobje/enterprise115/aix_rs6000/boe_fcprocd
-name vanpg
10000000    10907K read/exec     boe_fcprocd
3000079c    1399K read/write    boe_fcprocd
d42c9000    1098K read/exec
/home7/jbrown/vanpgaix40/bobje/enterprise115/aix_rs6000/libcrypto.so
33e34160     167K read/write
/home7/jbrown/vanpgaix40/bobje/enterprise115/aix_rs6000/libcrypto.so
33acc000    3133K read/exec
/home7/jbrown/vanpgaix40/bobje/enterprise115/aix_rs6000/libcpi18nloc.so
33ddc697     349K read/write
/home7/jbrown/vanpgaix40/bobje/enterprise115/aix_rs6000/libcpi18nloc.so

清理工作

关闭应用程序后,共享库可能仍然驻留在共享段 0xd 中。在这种情况下,您可以使用实用工具“slibclean”卸载不再引用的任何共享库。该实用工具不需要参数:

slibclean

还可以使用实用工具 genld,在传递 -l 选项时,该工具可以显示类似于 procmap 的结果,但它会显示系统中的所有现有进程:

genld -l

有时,在运行 slibclean 后,您可能仍然无法复制共享库。例如:

$ cp /build/dev/bin/release/libc3_calc.so  /runtime/app/lib/
cp: /runtime/app/lib/libc3_calc.so: Text file busy

您可能已经运行了 slibclean,并且运行“genld –l”时未显示任何进程加载了该库。但是系统仍然在保护该文件。您可以通过以下方法解除此限制:首先删除目标位置的共享库,然后复制新的共享库:

$ rm /runtime/app/lib/libc3_calc.so
$ cp /build/dev/bin/release/libc3_calc.so  /runtime/app/lib/

在开发共享库时,如果您要执行重复的编译、链接、执行和测试练习,您可以通过将共享库设置为只有所有者才能执行(例如,r_xr__r__)来避免在每个周期中运行 slibclean 的麻烦。这将导致您用于测试的进程单独地加载和映射您的共享库。但是,请确保让所有人都可以执行它(例如,产品发布时设为 r_xr_xr_x)。

总结

我希望您能够更详细地了解共享库占用内存的方式以及可用于检测它们的实用工具。这样您就能更好地评估应用程序的规模需求,并分析在 AIX 系统中运行的进程的内存占用构成情况。

上一页  4 5 6 7 8 9 

Tags:AIX 共享 内存

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接