有没有办法获取正在运行的JVM的参数?是否有像jstat这样的命令行工具将JVM的pid作为输入并返回其启动参数?我对启动JVM时给出的-Xmx和-
Xms值特别感兴趣。谢谢。
编辑
:澄清我的约束。我们要检查的JVM正在生产服务器上运行。因此,我们更喜欢最小的干扰。我们能够使用jstat监视JVM,因此我们希望有一个类似的简单解决方案来访问参数。
编辑
:我们还尝试使用jvisualvm获取参数。但是,为了连接到远程jvm,我们需要运行jstatd并修改JVM的安全设置,我们发现这在生产服务器上具有很大的破坏性和风险。
你可以像这样使用jps
jps -lvm
打印类似
4050 com.intellij.idea.Main -Xms128m -Xmx512m -XX:MaxPermSize=250m -ea -Xbootclasspath/a:../lib/boot.jar -Djb.restart.code=88
4667 sun.tools.jps.Jps -lvm -Dapplication.home=/opt/java/jdk1.6.0_22 -Xms8m
问题内容: 我正在尝试对一堆数据进行排序,以使输入到程序的数据大小可以大于JVM可用的内存,并且处理所需的外部排序要比Quicksort慢得多。 有什么方法可以在运行时获取可供JVM使用的内存,以便我可以在尽可能多的地方使用排序,并且仅在数据输入太大时才切换到Mergesort吗? 问题答案: 在类中查看以下方法: 例 还要注意,如果总内存已用完,则始终可以使用JVM参数分配更多的堆来启动JVM。
问题内容: 在已经加载(运行)JVM之后,是否可以更改/修改/添加VM参数?如果是这样,我该怎么办? 问题答案: 对于通过命令行上的标志设置的属性,您需要System.setProperty。例如: 更新: 您无法动态启用调试,但是可以在启动时启用调试,但稍后再附加调试器。通过以下操作,您可以侦听端口12345并立即开始运行程序(通过)。然后,您可以在需要时附加调试器,分离调试器,稍后再附加等。
问题内容: 有一个问题- 我的主要活动是启动服务,然后关闭。当应用程序下次启动时,该应用程序应获得对该服务的引用并停止它。但是我不知道如何获得正在运行的服务的引用。拜托,我希望你能帮助我。谢谢。 问题答案:
问题内容: 我正在尝试获取Windows机器上所有当前正在运行的进程的列表。 我正在尝试通过JNA的winapi调用EnumProcesses-> OpenProcess-> GetModuleBaseNameW-> CloseHandle尝试OpenProcess调用时失败。GetLastError返回5(ERROR_ACCESS_DENIED)。 这是我的代码: 问题答案: 调用with 表示
问题内容: 我正在使用自定义信号处理程序在自定义Java守护程序中捕获TERM,ABRT和INT信号。我在代码中有此处理程序,以便可以向其发送TERM信号,并通过kill命令正常关闭程序。信号处理程序现在可以正常工作,但是当我编译代码时,我收到以下警告(很多次): 警告:sun.misc.SignalHandler是Sun专有的API,将来的发行版中可能会删除它。 在使用这些类时: 有没有更好的方
问题内容: 我为Clojure添加了耐用性,最后我可以添加函数了。在Clojure中,使用调用方法(以及其他方法)将字节字节编译为类。这样,功能就是一流的。为了使这些持久化,我需要序列化和反序列化这些类。如何在不访问.class文件的情况下获取类的字节码? 如果我弄错了,请纠正我,但是使用代理程序需要产生一个单独的VM,并且该代理程序连接到第一个VM。我需要从同一台VM执行此操作。 仅使用Seri