【问题标题】:How to identify java heap size in 1.4如何在 1.4 中识别 Java 堆大小
【发布时间】:2019-12-30 14:10:55
【问题描述】:

我正在运行 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 1.4 中不可用,它在 8 上对我来说工作得很好
  • 你为什么需要这个?
  • "我正在运行 Java 1.4" - 很久没有听到这个名字了。你真的应该更新到更新的版本,例如Java 1.6。这是我所知道的仍在积极维护的最旧版本(在本例中由 Azul Systems 通过 OpenJDK)。
  • @user1516873 ,我的一位客户的应用程序在 1.4 上运行并导致性能问题并导致内存不足错误。为了进一步调试,我想知道这个 JVM 的堆大小。我不知道如何继续。
  • 在任何情况下,您通常会从 JVM 参数中得出最大堆大小,如果没有指定,它使用默认值,对于非服务器 JVM 为 64 兆字节(尽管它可能有那时 1.4 是 32MB)。

标签: java jvm-arguments java1.4


【解决方案1】:

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

你可能感兴趣的部分:

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

-XX:+HeapDumpOnCtrlBreak

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

但请考虑升级。

【讨论】:

【解决方案2】:

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

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

  • 串行垃圾收集器
  • 堆大小
  • 初始堆大小为 4 MB
  • 最大堆大小为 64 MB
  • 客户端运行时编译器

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

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

不可附加的应用程序,管理代理被禁用。其中包括在 Java SE 1.4.2 平台上启动的应用程序或在没有 -Dcom.sun.management.jmxremotecom.sun.management.jmxremote.port 选项的 Java SE 5.0 平台上启动的应用程序。

你在做考古。我认为你应该接受你不会得到一个完美的答案,而只是看看操作系统为 JVM 进程分配了多少内存。

【讨论】:

    猜你喜欢
    • 2013-10-02
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 2020-03-17
    • 2015-02-25
    • 2019-02-17
    • 2010-12-06
    相关资源
    最近更新 更多