如何在 1.4 中识别 java 堆大小

How to identify java heap size in 1.4

我是运行Java1.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 版本不支持这个命令。

我能够挖掘这个: http://sysadminsjourney.com/content/2008/09/05/profiling-your-java-142-memory-heap/

您可能感兴趣的部分:

The key is to have your app do a heap dump when sending it the QUIT signal. Append this option to your java options on startup of your application:

-XX:+HeapDumpOnCtrlBreak

之后,您需要向它发送一个 SIGQUIT (kill -3 <PID>)。它会将堆转储到一个文件中,你可以去镇上。

但请考虑升级。

根据 Ergonomics in the 5.0 Java TM Virtual Machine,如果您没有在 Java 1.4 进程命令行中指定 -Xms-Xmx 参数,它将在 4 MB 到 64 之间MB:

In the J2SE platform version 1.4.2 by default the following selections were made

  • Serial garbage collector
  • Heap sizes
  • initial heap size of 4 Mbyte
  • maximum heap size of 64 Mbyte
  • Client runtime compiler

您可以尝试安装 JMX extension for Java 1.4 以获取运行时值,但不幸的是,Oracle 官方网站似乎不再提供下载。

没有 JMX 扩展你不能使用 JConsole,as per docs:

Applications that are not attachable, with the management agent disabled. These include applications started on a Java SE 1.4.2 platform or started on a Java SE 5.0 platform without the -Dcom.sun.management.jmxremote or com.sun.management.jmxremote.port options.

你在做考古。我认为您应该接受您不会得到完美答案的事实,只需查看操作系统分配给 JVM 进程的内存量即可。