如何在1.4中识别java堆大小

如何在1.4中识别java堆大小,java,jvm-arguments,java1.4,Java,Jvm Arguments,Java1.4,我正在运行Java 1.4(Java版本“1.4.2_08”) 我想知道JVM的当前堆大小是多少 当我在命令下面跑的时候 java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize| PermSize|ThreadStackSize' 我得到这个错误: Unrecogni

我正在运行Java 1.4(Java版本“1.4.2_08”)

我想知道
JVM
的当前堆大小是多少

当我在命令下面跑的时候

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|                                                                                        PermSize|ThreadStackSize'
我得到这个错误:

Unrecognized VM option '+PrintFlagsFinal'
Could not create the Java virtual machine.
我阅读了一些文章,了解到Java 1.4版本不支持的中的这个命令。

我能够找到这个:

您可能感兴趣的部分:

关键是让你的应用程序在发送退出信号时进行堆转储。在应用程序启动时将此选项附加到java选项:

-XX:+HeapDumpOnCtrlBreak
之后,您需要向它发送一个SIGQUIT(
kill-3
)。它会将堆转储到一个文件中,您可以在该文件上进城

请考虑升级。 根据,如果您没有在Java 1.4进程命令行中指定
-Xms
-Xmx
参数,它将在4 MB到64 MB之间:

在J2SE平台版本1.4.2中,默认情况下进行了以下选择

  • 串行垃圾收集器
  • 堆大小
  • 初始堆大小为4 MB
  • 最大堆大小为64 MB
  • 客户端运行时编译器
您可以尝试安装以获取运行时值,但不幸的是,Oracle官方网站似乎不再提供下载

没有JMX扩展,就不能使用JConsole:

禁用管理代理时不可附加的应用程序。这些包括在Java SE 1.4.2平台上启动的应用程序,或在Java SE 5.0平台上启动的
-Dcom.sun.management.jmxremote
com.sun.management.jmxremote.port
选项


你在做考古学。我认为您应该接受这样一个事实:您不会得到一个完美的答案,只需看看操作系统为JVM进程分配了多少内存即可。

该标志很可能在java 1.4中不可用,它在8上对我很好,为什么需要它?“我正在运行java 1.4”-我很久没有听到这个名称了。您应该真正更新到更新的版本,例如Java1.6。这是我所知的最旧版本,目前仍在积极维护中(本例中由Azul Systems通过OpenJDK进行维护)。@user1516873,我的一位客户的应用程序运行在1.4上,导致性能问题和内存不足错误。为了进一步调试,我想知道这个JVM的堆大小是多少。我不知道如何继续。在任何情况下,您通常会从JVM参数派生最大堆大小,如果没有指定,它将使用默认值,非服务器JVM的最大堆大小为64 MB(尽管在1.4中可能是32MB)。仅供参考:OP不能下推:谢谢@Z4 tier,我现在可以通过运行ps-elf | grep-I--colorxmx命令来查看堆大小