【问题标题】:Running java web application with JVM memory defaults使用 JVM 内存默认值运行 Java Web 应用程序
【发布时间】:2019-08-28 16:16:57
【问题描述】:

我正在使用我的 IDE (IntelliJ) 运行我的 Java Web 应用程序并执行大量操作,该操作现在已经运行了大约 5 个小时左右。它包括大量的数据库插入,大量的对象创建,我想这也是 CPU 密集型的,而且它在网络上一点也不繁重。

在我的任务管理器(windows)中的当前外观给了我这些数字:

  • CPU:35%
  • 内存:49%
  • IO:1%
  • 网络:0%
  • GPU:5%

进程的使用,是...

...按 CPU 使用率排序如下:

  1. “PostreSQL 服务器”
  2. “IntelliJ IDEA (9)”
  3. “谷歌浏览器 (16)”

...按内存消耗排序:

  1. “IntelliJ IDEA (9)”
  2. “谷歌浏览器(16)”
  3. “OpenJDK 平台二进制”

我的主观感觉肯定是,我的电脑很辛苦,我听到风扇不停地转动,而且在窗口之间切换时我看到延迟。

但是,我想知道,为什么我的任务管理器没有显示我的计算机正在充分利用其中一种资源?

我猜这意味着,我的应用程序已经在使用最大可用内存(受 JVM 堆大小限制)?我没有明确指定这一点,并运行

java -XX:+PrintFlagsFinal -version | findstr HeapSize

为我提供这些默认值:

uintx ErgoHeapSizeLimit                         = 0                                   {product}
    uintx HeapSizePerGCThread                       = 87241520                            {product}
    uintx InitialHeapSize                          := 268435456                           {product}
    uintx LargePageHeapSizeThreshold                = 134217728                           {product}
    uintx MaxHeapSize                              := 4271898624                          {product}
openjdk version "1.8.0_202"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_202-b08)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.202-b08, mixed mode)

我的机器上有 16 GB 物理 RAM,您是否建议我按照此处所述为 xmsxmx 设置显式值? How can I increase the JVM memory?

【问题讨论】:

    标签: java memory jvm


    【解决方案1】:

    默认情况下,JVM 使用 1/4 的可用物理内存作为MaxHeapSize。如果您需要更多,那么您可以通过-Xmx 指定。 这实际上取决于您的应用程序及其需求。

    请注意,IDEA 本身可能会消耗大量内存,因为它也是 Java 应用程序。 如果您担心性能,您应该首先分析您的应用程序(从 VisualVM 之类的东西开始),然后根据需要进行调整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 2018-03-28
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多