在JVM上禁用本地JMX连接

我们正在编写一个java程序,它将密码保存在内存中。 不幸的是,用户可以轻松地使用jconsole或jmap创建堆转储文件并打开它以查找密码。 我认为jconsole使用本地套接字连接jvm。 我想知道,有没有办法甚至为本地用户禁用jmx? 有没有办法完全禁用堆转储? 由于用户可以访问内存段,因此无论如何都可以访问密码。 但是,我想禁用标准的方法来使行动尽可能昂贵。

最后,我找到了一个禁用jconsole连接的解决方案。 它还可以防止jmap创建转储文件。 我在这里找到了解决方案。 我也在这里引用答案:

您可以通过运行-XX:+ DisableAttachMechanism选项来阻止jconsole等工具连接。 请注意,此选项未记录/支持,但应该执行您想要的操作。 也就是说,即使有这个,也没有什么可以阻止你连接gdb或其他基于调试/ proc的程序

但是,很明显可以在本地访问内存段。 但是,有没有人知道一个工具来直接访问内存进行标准内存转储?

将最大连接数设置为零会关闭JMX

-Dsun.rmi.transport.tcp.maxConnectionThreads=0 

如果您仍需要统计信息,请阅读相应的hsperfdata_ *文件

编辑:我在github上发布了我的hsperf munin插件 。