防止使用共享内存

时间:2015-03-03 12:24:43

标签: java unix memory ipc shared

我所做的java应用程序显然是在使用共享内存,这会干扰我客户端的unix环境中其他程序的部署。

从来没有使用任何共享内存的意图,我需要确定它的使用位置。


计划概述:

- 通用可执行jar,它将读取配置文件,执行unix命令行脚本并将输出的完整性发布到其他地方托管的REST服务。每小时重复一次(它监控环境的健康状况)

- jar有3个单独的实例同时运行,但是读取不同的配置文件。它们在任何时候都不共享任何文件,并且它们创建的日志文件是分开的。

- 所有BufferedReaders,InputStream等都会相应地打开和关闭。


启动程序后,通过在ipcs -a中对进程ID进行greping来检查它在共享内存中的存在,并列出它们。

熟悉IPC和java的人是否有任何警告标志? 我可以使用任何执行选项来阻止共享内存的使用吗?

干杯

编辑:

@Aaron - 没有错误,但是当其他程序部署在环境中时,他们会检查使用共享内存的进程。如果有进程,它将停止部署。必须有理由进行检查,但我不知道......

1 个答案:

答案 0 :(得分:1)

我可以想到几个可能的解释:


至于如何找到罪魁祸首,也许你应该尝试在java下运行strace。这篇博客文章告诉你如何:

然而,从原始痕迹到明确诊断可能并不容易。


  

当在环境中部署其他程序时,他们使用共享内存检查进程。如果有进程,它将停止部署。必须有理由进行检查,但我不知道......

这可以防止某些应用程序的许可证检查颠覆...或类似的东西。我倾向于与这些程序的提供者/供应商交谈,以找出他们的软件失败的原因。询问>>他们<<获得可接受的解决方法,使他们的代码与Java和/或Java appss共存。