Tomcat无端僵死,JAVA编程问题何在?

我是一位平凡的小程序员,最近给公司开发了一个商务网站。使用的环境是
:j2sdk1.4.2.06,apache2,tomcat5.0.27,mysql4.0.23MAX,操作系统是redhat linux 企
业版3.0.
apache和tomcat作了连接。
现在网站目前仍然处于测试阶段,在没有任何大的访问量的情况下经常不能正常应答。
开始以为系统资源耗尽,我在linux 用top察看资源发现服务器的内存还有280MB没有使
用。下面是tomcat不能应答情况下的
资源使用列表
10:24:16 up 2 days, 18:21, 2 users, load average: 0.00, 0.00, 0.00
79 processes: 77 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 0.1% 0.0% 0.9% 0.0% 0.0% 1.3% 97.4%
Mem: 1027480k av, 743348k used, 284132k free, 0k shrd, 145224k buff
416172k active, 150116k inactive
Swap: 2048276k av, 480k used, 2047796k free 340124k cached
然后我用phpMyAdmin访问mysql数据库,发现数据库可以正常工作。直接访问apache目
录下的静态文件
也可以正常访问。只有访问tomcat会出现访问无应答。重起tomcat一切恢复正常。我用
jmeter测试发现10线程并发访问100次
java的资源占用40MB左右,而当出现tomcat僵死的时候java的资源占用达到了80MB.我
想可能是我程序的编写存在一些问题。
只是该如何寻找着问题的所在呢?我希望你能给我提供一些思路,我是初次接触java,
程序写的不够规范。希望你能提供一些
指导性的建议,主要是关于安全和性能方面的。
贸然打扰,请多多包
涵.

用jmeter经过并发10,20,30,40,线程100次循环的访问均可以通过。并发
50就不行了。而且java的内存占用也从40MB达到了84MB,并且一直高居不下。我记得java有自己的垃圾回收机制。为什么访问后系统资源许久不能
得到释放呢?
12549 root 25 0 86136 84M 10924 S 0.7 8.3 4:20 0 java

java垃圾收集机制其实是懒惰而且贪婪的,象connection之类的

资源应在程序里自己回收,详情参看上面帖子吧

多谢指点,还有一点如何在tomcat5.0.27中修改jvm的内存使用大小。
我在网上搜了一些帖子,说的都不甚明确。
我修改了catalina.sh文件
在所有的 "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \后面都加上了
-Xms128m -Xmx256m \
重新启动tomcat后
top发现java的内存占用还是30左右,并未达到我设定的最小值。

我用的是tomcat自带的连接池,下面是我的连接池类。看了上面朋友提到的文章我发现我的连接池类中获得连接的方法是个静态的方法,静态的方法不会被释放。那么是否会随着程序的运行而出现问题呢?
public class ConnectionPool {

public static Connection getConnection() throws SQLException,Exception {
Connection con = null;
try{
ResourceBundle rb = ResourceBundle.getBundle("jzb2b");
String dsName = "java:comp/env/" + rb.getString("jzb2b.datasource");
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup(dsName);
con = ds.getConnection();

}catch(NamingException e){
System.out.println("NamingException error:"+e);
}catch(SQLException e){
System.out.println("SQLException error:"+e);
}
return con;
}

}

注意查看你的connection pool是否爆了。