紧急求助Tomcat问题!!!

在Server.xml中,如果设置maxProcessors的值太大(为200),则服务器运行一段时间后,Tomcat界面上会出现java.lang.OutOfMemoryError”,但如果设置maxProcessors的值太小(为50),则Tomcat界面上会出现“All threads are busy, waiting. Please increase maxThreads or check the servlet status50 50”的提示信息,不知道哪位高手知道解决办法,这里谢谢先!

修改虚拟机参数
java -Xms512m -Xmx512m
这下应该够用了吧!

要确定两件事
1。虚拟机内存大了不是好事,如果你用不了那么多,垃圾回收的时间是很长的,系统反而会变慢。
2。如果应用程序有内存泄漏,改成1G用户量上去了也会outofmemory

楼上的大哥,我也碰到楼主所说的情况,

但是,我不知道,java -Xms512m -Xmx512m
是什么意思,能给我解释一下吗?

谢谢

-Xms java分配内存最小限制(下限)
-Xmx java分配内存最大限制(上限)
不指定的话应该是 16m 16m
上面的用词可能不太严谨,基本意思差不多,呵呵

如果我的环境是TOMCAT3.2.3+LINUX7.0的话,应该在哪里修改?
我看到你在某帖子上的环境应该是TOMCAT4以上的版本吧

是不是在/etc/profile 加上 export 。。。?

还有个问题,如果在环境中设置好了变量:
JAVA_OPTS=-Xms128m -Xmx128m
export JAVA_OPTS

我是在/etc/profile里加入的,我想知道如何才能确定这个参数设置有效?

我做个测试,用了:
out.println("total memory is: " + java.lang.Runtime.getRuntime().totalMemory() / 1024 );

out.println("free memory is:" + java.lang.Runtime.getRuntime().freeMemory() / 1024 );

我设了值是128M,但是我看页面显示“total memory is: 13396 free memory is:9638 ”,也才13M左右,所以不是很确定参数是否有效?

我JDK的版本是1.3.1_04

JAVA_OPTS=-Xms128m -Xmx128m
export JAVA_OPTS

当我登陆LINUX时,报错误提示:
bash: -Xmx128m: command not found

于是我改成:
JAVA_OPTS=-Xms128m
export JAVA_OPTS

这样重新登陆时,没有错误提示,但是用上面的方法测试,却又觉得没什么效果?
有知道原因的吗?请赐教。。。。。

/etc/profile有效的。

使用ps -ax 可以看到是否有效,需要你对linux熟悉。

有谁做过与我类似的测试,但得到与我相反结果的,请赐教,谢谢了。。

不好意思,我对LINUX确实不是很熟,我查了下资料,

使用方式:ps [options] [--help]
说明:显示瞬间行程 (process) 的动态
参数:
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程

然后运行,BANQ说的ps -ax ,觉得结果好象都是当前的进程,不知道如何才知道这个参数设置完是否有效?

因为我没有从结果中看到关于JVM的信息,请帮忙,谢谢了。。。

我后来用env看了下环境变量,里面有:
JAVA_OPTS=-Xms128m
但是能根据这个就判断JVM参数有效吗?

还有我后来发现了我原来:
当我登陆LINUX时,报错误提示:
bash: -Xmx128m: command not found

这个地方错误的原因了,应该是:

JAVA_OPTS=-Xms128m-Xmx128m
export JAVA_OPTS

这里不能有空格,加了空格可能是认为第二条命令。。

此时用env查看环境变量,可以观察到:
JAVA_OPTS=-Xms128m-Xmx128m

疑问类似与上面。。。。

根据JDK的文挡:
totalMemory

public long totalMemory()Returns the total amount of memory in the Java Virtual Machine. The value returned by this method may vary over time, depending on the host environment.
Note that the amount of memory required to hold an object of any given type may be implementation-dependent.

Returns:
the total amount of memory currently available for current and future objects, measured in bytes.

但是我运行:out.println("total memory is: " + java.lang.Runtime.getRuntime().totalMemory() / 1024 );
的结果确是
total memory is: 22400 或12400

总是得不到理想的数字,所以我不能很确定通过我上面的方法是否已经有效的设置了JVM参数?

我在tomcat的catalina.sh里设CATALINA_OPTS="$CATALINA_OPTS -Xms512m -Xmx512m",这下行了!

各位老大!!
比如:
改写catalina.sh ,我不知道怎么改 在catalina.sh文件的哪个位置改。
我是菜鸟阿

谢谢指教