【问题标题】:How to identify default Java heapsize in Windows如何识别 Windows 中的默认 Java 堆大小
【发布时间】:2013-10-02 10:12:03
【问题描述】:

我正在我的机器上运行一个 Eclipse 应用程序。我有两个问题

  1. 我想知道如何检查 jvm 用于运行应用程序的默认堆大小。我正在使用 windows 机器来运行 java 应用程序。我尝试通过以下方式检查默认堆大小

ControlPanel--->Programs--->JavaSetting--> JavaTab -->View Button ---> JavaRuntimeEnvironment 设置窗口 ---> Userstab --> RuntimeParameters 下的 Value

但在我的系统中,没有定义运行时参数。是否有可以通过命令提示符执行的命令来检查我机器中的默认堆大小。

  1. 如何增加堆大小参数并从命令提示符运行 eclipse 插件应用程序。 例如:要增加堆大小并执行 jar 文件,我们使用以下命令 java -Xms64m -jar MyApp.jar。我想知道如何设置堆参数并执行我的 java 应用程序,它是一个 exe 文件。我尝试使用以下命令执行,但命令提示符无法识别该命令

    java -Xms512m iepsd.exe

iepsd.exe 是我的 java 应用程序。

【问题讨论】:

  • 如何创建exe文件?
  • 我们使用的java应用程序是一个基于eclipse的应用程序。当我们尝试导出 jar 文件时,构建被导出为 .exe 文件。
  • 在项目的构建文件中的某个地方,您应该能够设置 exe 将传递给 jvm 的参数。尝试查看您使用的“exe 生成器”库的文档。

标签: java memory memory-management


【解决方案1】:

在处理完所有命令行参数和默认值后,您可以使用-XX:+PrintFlagsFinal 将大量内部选项打印到 JVM。 -Xms选项对应InitialHeapSize,-Xmx选项对应MaxHeapSize。

要查找 JVM 在 Windows 上使用的默认最大堆大小,请运行:

javaw -XX:+PrintFlagsFinal | find "MaxHeapSize"

要查找默认的初始堆大小,请运行:

javaw -XX:+PrintFlagsFinal | find "InitialHeapSize"

【讨论】:

  • 您好,感谢您的回复。我尝试执行上面的命令'javaw -XX:+PrintFlagsFinal |在命令提示符中找到“InitialHeapSize”,该值未显示。我收到一条弹出消息,提示无法创建 java 虚拟机
  • 如果您在运行 javaw 时遇到错误,则说明您遇到了某种安装或配置问题。对话框中的确切错误消息是什么?你试过重启吗?
  • 请告诉我,点击上述命令后返回的值...单位?是字节还是 KB?谢谢。我希望它是“字节”
  • 我假设单位是字节,但这很容易确定。只需尝试一些不同的 -Xmx 选项,看看它们如何影响结果。 -Xmx1G 应该将最大堆大小设置为 10615783424 字节,例如。
  • 我试过了:C:\Users\Administrator>javaw -XX:+PrintFlagsFinal |在 Windows Server 中提示“MaxHeapSize”“无法创建 Java 虚拟机”错误。我犯了什么错误?
【解决方案2】:

尝试下面的命令以获得详细结果

java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"

结果是

C:\Users\amar.magar>java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize ThreadStackSize"
 intx CompilerThreadStackSize                   = 0                                   {pd product}
uintx ErgoHeapSizeLimit                         = 0                                   {product}
uintx HeapSizePerGCThread                       = 87241520                            {product}
uintx InitialHeapSize                          := 268435456                           {product}
uintx LargePageHeapSizeThreshold                = 134217728                           {product}
uintx MaxHeapSize                              := 4271898624                          {product}
 intx ThreadStackSize                           = 0                                   {pd product}
 intx VMThreadStackSize                         = 0                                   {pd product}

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

【讨论】:

    【解决方案3】:

    回答下面vr3w3c9的查询

    vr3w3c9提出的查询: 您好,感谢您的回复。我尝试在命令提示符下执行上述命令javaw -XX:+PrintFlagsFinal | find "InitialHeapSize",但没有显示该值。我收到一条弹出消息,上面写着:

    无法创建 java 虚拟机 – vr3w3c9 2013 年 9 月 27 日 4:54

    回答:在 Windows 机器上,请以管理员身份运行/打开命令提示符(Windows 命令处理器)并执行您提到的命令。你会得到如下所示的结果:

    C:\windows\system32>javaw -XX:+PrintFlagsFinal | find "MaxHeapSize"
    
    uintx MaxHeapSize                              := 2122317824      {product}
    
    C:\windows\system32>javaw -XX:+PrintFlagsFinal | find "InitialHeapSize"
    
    uintx InitialHeapSize                          := 132531136       {product}
    

    这里,MaxHeapSize 和 InitialHeapSize 的unitbytes

    【讨论】:

    • 我已经尝试过相同的方法,但仍然收到错误消息“无法创建 java 虚拟机”
    【解决方案4】:

    使用 JConsole。它随 JDK 一起提供。你会在相应的 bin 目录中找到它的可执行文件。

    【讨论】:

    • 能否请您详细说明一下。单击 jconsole.exe 文件后,它会打开一个控制台。不确定如何继续以及如何识别默认堆大小
    • 您的 java 进程将列在本地进程下。连接到它。连接后,您将有很多选项,包括堆转储、线程转储等。您还将知道堆空间的确切划分,例如 perm gen 等。Jconsole 有问题,您可能无法始终连接到您的过程。我个人使用 jvisualvm。但我在Linux中知道。您可能想为 Windows 搜索相同的内容(您必须单独安装)
    【解决方案5】:

    映射JDK,一般在“C:\Program Files (x86)\Java\jdk1.8.xx.xx\bin\jconsole”。打开 jconsole 应用程序,您现在可以监控和管理 JVM。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-28
      • 2013-06-26
      • 2015-02-17
      • 2012-09-19
      • 1970-01-01
      • 2017-07-14
      • 2011-08-29
      • 2015-04-01
      相关资源
      最近更新 更多