这个问题我实在是受不了了,baidu了无数就是找不到答案
问题是这样的:
遍历
使用循环查询,父节点 -> 子节点 ,再以字节点为父节点继续查询,遍历到最后.
现在的问题是,循环进行的时候Tomcat总是时不时的从Start状态变成Stop状态其中循环的时候使用Arraylist.Add增加父节点的List(每次查询到的子节点,如果ArrayList中不存在就添加到Arraylist中变成父节点)
这样以Arraylist的size为循环查询的次数.比如:有一些父节点A,B,C,D   我要找到所有相关节点,第一次循环(i=0;i<list.size();i++)A找到E、F  listsize 4变成6
那么父节点List变成A,B,C,D,E,F ,第二次循环查询B节点查到D、G Listsize变成7
那么父节点List变成A,B,C,D,E,F,G(D是重复的不添加)
错误信息:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77c181cd, pid=5452, tid=5468
#
# JRE version: 6.0_24-b07
# Java VM: Java HotSpot(TM) Client VM (19.1-b02 mixed mode, sharing windows-x86 )
# Problematic frame:
# C  [msvcrt.dll+0x381cd]
产生Error File : hs_err_pid5452.log

解决方案 »

  1.   

    加jvm的启动参数
    -server下载最新的jdk ,加大jvm的最大堆栈内存
      

  2.   

    这些方法我都试过了,结果是不定时的出现在不同的地方,然后我还试过手动释放内存,用vct.clear()方法把查询的结果使用过后都释放掉,没有死循环,不是内存问题,请各位大虾指教啊.所有方法都试过了
      

  3.   

    还有就是connection.close(),stmt.close(),rs.close()都是执行过的.
      

  4.   

    求求你们了,那个厉害点的过来帮我一下啊,我都困扰了几个星期了,baidu看了无数
      

  5.   

    运行tomcat6w->java页签->设置虚拟机内存inital memory pool :512  maximun memory pool:1024
      

  6.   

    我是过了
    刚才想发,但是不能连续回复3次
    断点发现:
    104次连接
    Connection建立,STMT建立,SQL查询没有执行
    手动执行SQL语句完全没问题,执行结果正常。
    是不是数据库对连接有限制?
      

  7.   

    我觉得关键是这句:# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77c181cd, pid=5452, tid=5468
    说明是连接发生了错误啊,pid5452是什么,有5452个进程?,还有TID呢?
      

  8.   

    觉得应该在sql上入手,循环连接这么多次数据库负担实在是太大了,sql可通过connect by 来循环查询,连接数据库一次即可
      

  9.   

    这个,上代码不行啊,公司保安规定,不关闭连接我也试过,但是没用,结果是一样的,就是RS.close 
    SMST.close ,然后Connection不进行close,再循环建立STMT和RS,结果和上述情况一样.
      

  10.   

    如果你只想找出来哪些是父结点,就是没有子结点的话,你不用这样去查询啊.
    一般你的表结构应该是有一个父结点ID字段吧,你做一个左连接就可以出结果了.
    id pid name
    select a.id,a.name as pname,isnull(b.name,'') as name as  from table1 a left join
    table1 b on a.id=b.pid如果name为""表示这个结点没有子结点.试试下边这句能不能把有子结点的查出来.
    select distinct a.id,a.name as pname  from table1 a ,table1 b 
    where a.id=b.pid