你好, friend 们,我们已经在 java 1.6、tomcat 6、oracle 11g 上迁移了我们的 java web 应用程序 但现在我们在网站关闭一段时间后面临问题: 我们得到 java 堆内存不足错误,许多线程处于等待状态。 tomcat 被挂起,我们的网站正在崩溃
信息:为地址为空且端口为 80 的连接器创建的最大线程数 (200) 2013 年 2 月 21 日晚上 9:56:04 这是线程日志:
日志"main" prio=10 tid=0x09f67c00 nid=0x2d51 runnable [0xf7622000]
java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
- locked <0xc5078c60> (a java.net.SocksSocketImpl)
"VM Thread" prio=10 tid=0x09f8ac00 nid=0x2d52 runnable
"VM Periodic Task Thread" prio=10 tid=0x09f9cc00 nid=0x2d58 waiting on condition
JNI global references: 1074
Heap
def new generation total 78656K, used 78533K [0xbf760000, 0xc4cb0000, 0xc4cb0000)
eden space 69952K, 100% used [0xbf760000, 0xc3bb0000, 0xc3bb0000)
from space 8704K, 98% used [0xc4430000, 0xc4c91428, 0xc4cb0000)
to space 8704K, 0% used [0xc3bb0000, 0xc3bb0000, 0xc4430000)
tenured generation total 174784K, used 174783K [0xc4cb0000, 0xcf760000, 0xcf760000)
the space 174784K, 99% used [0xc4cb0000, 0xcf75fff8, 0xcf760000, 0xcf760000)
compacting perm gen total 33792K, used 33647K [0xcf760000, 0xd1860000, 0xd3760000)
the space 33792K, 99% used [0xcf760000, 0xd183be68, 0xd183c000, 0xd1860000)
ro space 10240K, 61% used [0xd3760000, 0xd3d86298, 0xd3d86400, 0xd4160000)
rw space 12288K, 60% used [0xd4160000, 0xd4896cb8, 0xd4896e00, 0xd4d60000)
结尾
请指导。
谢谢, 阿鲁
最佳答案
根据您发布的日志,上面评论中提到的您的 jvm 设置(在 JAVA_OPTIONS
中定义)根本没有得到尊重/使用。
(例如,permgen 使用 32m
而不是指定的 512m
)。
我的猜测是您刚刚为环境变量使用了错误的名称:
在 tomcat 中指定 JVM 设置的正确环境变量名为 JAVA_OPTS
。
关于java - Tomcat 6线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15141861/