0

JVM に問題があります。Web ページと GUI のないアプリケーション (UDP サーバー) があり、どちらも同じデータベースを使用しています。アプリケーション (UDP サーバー) は正常に動作していますが、Web アプリケーションがメモリ不足になると JVM 全体が停止します。そのため、UDP サーバーを別の JVM に配置することを考えていました。

次のメッセージが表示されます

2013 年 5 月 21 日 5:24:05 PM org.apache.catalina.loader.WebappClassLoader
checkThreadLocalMapForLeaks .opengts.util.ThreadLocalMap$1@277085a4]) およびタイプ [java.util.Hashtable] の値 (値 [{jdbc:mysql://localhost:3306/gts?characterEncoding=UTF-8&useUnicode=true&characterSetResults=utf8=org .opengts.dbtools.DBConnection@22236dae}]) ですが、Web アプリケーションの停止時に削除に失敗しました。スレッドは、メモリ リークの可能性を回避するために、時間の経過とともに更新されます。

Webページを再起動すると

May 21, 2013 5:24:20 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 2695 ms
Exception in thread "http-bio-8080-Acceptor-0" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:657)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:943)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1336)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:176)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:156)
at org.apache.tomcat.util.net.JIoEndpoint.processSocket(JIoEndpoint.java:510)
at org.apache.tomcat.util.net.JIoEndpoint$Acceptor.run(JIoEndpoint.java:229)
at java.lang.Thread.run(Thread.java:679)
Exception in thread "http-bio-8080-exec-8" java.lang.OutOfMemoryError: unable to create new native thread
at java.lang.Thread.start0(Native Method)
at java.lang.Thread.start(Thread.java:657)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:943)
at java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:992)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:679)

新しい情報

ulimit コマンドを試してみましたが、次の結果が得られました。

ulimit
unlimited
ulimit -Hn
163840
ulimit -n
163840
ulimit -u
1024

さて、これらの数字の意味は何だろう?それらはプロセスまたはメモリの量 (MB) ですか?

4

3 に答える 3

2

JVMの問題ではなく、異なるポートでWebサーバーを実行する必要があります-それはカタリナの構成です

于 2013-05-21T21:08:14.793 に答える
1

「java.lang.OutOfMemoryError: 新しいネイティブ スレッドを作成できません」というエラーは、実際にはメモリ不足エラーではありません。OS の制限により、JVM は新しいスレッドを作成できません。

どのOSを使用していますか?Linux では、次のようにしてこれを増やすことができます。

ulimit -u <new limit>
于 2013-05-21T21:12:06.490 に答える