91

2GBを超えるJavaメモリを大量に消費するアプリケーションを実行する必要がありますが、ヒープの最大サイズを増やすのに問題があります。これまで、次のアプローチを試しました。

  • -Xmxパラメーターを設定します(例:-Xmx3000m)。このアプローチは、JVMの作成時に失敗します。私がグーグルで調べたところ、-Xmxは2GB未満でなければならないようです。

  • -XX:+AggressiveHeapオプションを使用します。このアプローチを試してみると、コンピュータに8GBのメモリがあるにもかかわらず、ヒープサイズが1273.4MBであることを示す「メモリ不足」エラーが発生します。

JVMの最大ヒープサイズを増やすことを試みることができる別のアプローチはありますか?コンピュータの仕様の概要は次のとおりです。

  • OS:Windows 7(64ビット)
  • プロセッサー:Intel Core i7(2.66 GHz)
  • メモリ:8 GB
  • javaバージョン:
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)
4

7 に答える 7

101

JVMを32ビットモードで使用している場合、割り当てることができる最大ヒープサイズは1280MBです。したがって、それを超えたい場合は、64モードでJVMを呼び出す必要があります。

次のものを使用できます。

$ java -d64 -Xms512m -Xmx4g HelloWorld

どこ、

  • -d64:64ビットJVMを有効にします
  • -Xms512m:初期ヒープサイズを512MBに設定します
  • -Xmx4g:最大ヒープサイズを4GBに設定します

要件に応じて-Xmsおよび-Xmxを調整できます(YMMV)

JVMパフォーマンスチューニングに関する非常に優れたリソース。http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.htmlを調べてください。

于 2010-06-18T04:57:27.597 に答える
49

Oracleから64ビットJVMを入手してください。

于 2010-06-12T22:18:32.067 に答える
15

2GBの制限は32ビットJava用だと思います。v1.6は常に64ビットだと思っていましたが、64ビットモードを強制してみてください。-d64オプションを追加してください。

于 2010-06-12T22:21:23.557 に答える
8

32ビットJavaは、約1.4〜1.6GBに制限されています。

Oracle32ビットヒープに関するFAQ

引用

32ビットJVMの理論上の最大ヒープ制限は4Gです。使用可能なスワップ、カーネルアドレス空間の使用、メモリの断片化、VMオーバーヘッドなどのさまざまな追加の制約により、実際には制限ははるかに低くなる可能性があります。最新の32ビットWindowsシステムでは、最大ヒープサイズは1.4Gから1.6Gの範囲になります。32ビットSolarisカーネルでは、アドレス空間は2Gに制限されています。32ビットVMを実行している64ビットオペレーティングシステムでは、最大ヒープサイズが大きくなる可能性があり、多くのSolarisシステムで4Gに近づきます。

于 2013-07-22T15:28:30.710 に答える
4

以下のconfは私のために働きます:

JAVA_HOME=/JDK1.7.51-64/jdk1.7.0_51/
PATH=/JDK1.7.51-64/jdk1.7.0_51/bin:$PATH
export PATH
export JAVA_HOME

JVM_ARGS="-d64 -Xms1024m -Xmx15360m -server"

/JDK1.7.51-64/jdk1.7.0_51/bin/java $JVM_ARGS -jar `dirname $0`/ApacheJMeter.jar "$@"
于 2015-04-21T16:22:33.767 に答える
0

私の場合、

-Xms1024M-Xmx1024Mは動作しています

-Xms1024M -Xmx2048M結果:オブジェクトヒープ用に十分なスペースを予約できませんでした

JVM 64ビットを使用した後、Win Server 2012を使用しているため、2GBのRAMを使用できます。

いくつかのOSでJVM32ビットに使用可能な最大ヒープサイズを参照してください Xmx forJVM32ビット

https://www.codementor.io/@suryab/does-32-bit-or-64-bit-jvm-matter-anymore-w0sa2rk6z

于 2021-01-11T04:10:35.397 に答える
0

メモリを大量に消費するアプリケーションの場合、GraalVmはより優れた代替手段として役立ちます。最大ヒープサイズおよびその他の利点として32GBを提供します。 ホットスポットとグラール

于 2022-02-24T10:33:53.050 に答える