我在使用 JVM 时遇到了一些问题;我有一个网页和一个没有 GUI(UDP 服务器)的应用程序,两者都使用相同的数据库,应用程序(UDP 服务器)工作正常,但如果 Web 应用程序内存不足,整个 JVM 就会停止;所以我想把UDP服务器放在不同的JVM中。
我收到以下消息
2013 年 5 月 21 日下午 5:24:05 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
严重:Web 应用程序 [/track] 创建了一个 ThreadLocal,其键类型为 [org.opengts.util.ThreadLocalMap$1](值 [org .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 应用程序停止时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏。
当我重新启动网页时
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 为单位的进程或内存量?