web-dev-qa-db-ja.com

weblogicのperm gen spaceエラーに直面する

私はweblogicが初めてです。サーバーを起動した後、管理コンソールを表示してログインすると、例外がスローされます。

Root cause of ServletException.
Java.lang.OutOfMemoryError: PermGen space
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:791)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.Java:335)
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.Java:288)
Truncated. see log file for complete stacktrace

私はたくさんのグーグルを実行し、Java_OPTIONSなどのように-XX:xmxを初期化するいくつかの解決策を見つけました。これをstartdomainenv.cmdファイルに設定しようとしましたが、うまくいきませんでした。

助けてください。どんなポインタでも高く評価されます。

ありがとう。

12
nakul

PermGenサイズを設定するには、たとえば、 -XX:PermSize=512m -XX:MaxPermSize=512m

Weblogicについては、Java_OPTIONSを設定し、これらのオプションがパラメータとして適切にJavaプロセスに渡されるかどうかを確認します。これらのパラメータをstartWeblogic.cmd 脚本。

Java_OPTIONSが正しく設定されていることを確認するには、echo %Java_OPTIONS%startWeblogic.cmdスクリプトに追加して、出力を確認します。また、たとえば、 jConsolejstat、またはjmapは、実行時のWeblogicプロセスのヒープ使用量を監視します。 PermGenのサイズと職業が表示されます。

13
Aleš

サーバーのweblogicのメモリ設定を変更してみてください。 *に移動-<weblogic path>\Middleware\user_projects\domains\fms_domain\bin\setDomainEnv.cmd *ファイルを開く*設定を変更する

if "%Java_VENDOR%"=="Sun" (
set WLS_MEM_ARGS_64BIT=-Xms256m -Xmx512m
set WLS_MEM_ARGS_32BIT=-Xms256m -Xmx512m
) else (
set WLS_MEM_ARGS_64BIT=-Xms512m -Xmx512m
set WLS_MEM_ARGS_32BIT=-Xms512m -Xmx512m
)

要件と環境に応じて、これらの設定を変更します。

7
coder1608

user267の応答を完了するには、次も変更する必要があります。set MEM_MAX_PERM_SIZE_64BIT = -XX:MaxPermSize = 256m

mEM_MAX_PERM_SIZE_32BIT = -XX:MaxPermSize = 256mに設定します

3
Karim Oukara

私の場合、解決策はDOMAIN\bin\setDomainEnv.cmdファイルを編集することでした。サーバーが意図したとおりに起動する前に、次の変更が行われました。

  • -Xms-Xmxの値が増加しました
  • -XX:PermSizeおよび-XX:MaxPermSizeの値も増加しました

そして最後に、しかしおそらく最も重要なことは

  • jVMを適切に認識するために、if "%Java_VENDOR%"=="Sun" (条件がif "%Java_VENDOR%"=="Oracle" (に変更されました。

この最後の変更の前に、メモリの変更は初期化されたJVMに部分的にしか反映されませんでした。これは、PermGenスペースに関するパラメーターが単に無視されたことを意味しました。

0
zovits

私が問題を解決した理由を共有したいだけです。setDomainEnv.shをソースとして$ {Java_OPTIONS}をエコーし​​、MEM引数がそこにないことに気付きました。

そこで、Java_OPTIONSの最後のセットアップにMEM_ARGSを追加しました。

そのようです:
Java_OPTIONS = "$ {Java_OPTIONS} $ {MEM_ARGS}"エクスポートJava_OPTIONS

乾杯

0
Abraham