问题有3:
1.什么情况下内存会溢出?
2.怎样避免内存溢出?
3.内存溢出后的解决方法有那些?(如果要是重启服务就不用说了!)
以上能举出例子更好

解决方案 »

  1.   

    要看是什么问题了。
    一般resultset statement connection这些对象打开后要注意关闭
    而且while(rs.next())
    不要对statement对象循环,否则会造成打开游标超过最大数问题。
    还是要看具体问题
      

  2.   

    一般来说,java不会出现内存溢出,但是还是有可能存在的比如:    List<StringBuffer> list = new ArrayList<StringBuffer>();
        while(true)
        {
            StringBuffer sb = new StringBuffer(1000);
            list.add(sb);
        }这段代码肯定会出现内存溢出避免内存溢出没有什么好方法,只有写代码的时候多注意了
    内存溢出属于Error,不是Exception,代码中不好解决,只有修改代码,重启
      

  3.   

    java很少会出现的,但还是有的,如:过大的数减去超小的负数重启可以
      

  4.   

    启动程序的时候,多给点堆空间吧.
    -Xmx500M
    如果还不行,程序有问题了
      

  5.   


    这个代码不一定会出现内存泄漏,是否内存泄漏依赖于list存活周期以及是否list对象是否在外面对其进行释放,像以下的这个代码就不会有问题
    Java code
        List<StringBuffer> list = new ArrayList<StringBuffer>();
        while(true)
        {
            StringBuffer sb = new StringBuffer(1000);
            list.add(sb);
        }
        StringBuffer buf = list.get(0);
        System.out.println(buf.toString());
        list.clear();内存溢出的问题是比较复杂,你需要分析你为jvm虚拟机分配的内存是否对你的负载是合适的,有些内存溢出是因为为jvm虚拟机分配的内存太小所致。但有一种情况则必然会产生内存泄漏,就是应用所占用的内存会随着时间的增长而增长,没有稳定的阶段。
      

  6.   

    1.我基本上想到了3种,(不知下面朋友还有补充,)1、java设置内存的参数是否合适
    2、查询数据库,遇到比较大的数据集,或者sql写的效率比较低
    3、java处理文件的时候,如果文件比较大。
    4. 使用非类型安全(non-type-safe)的语言如 C/C++ 等。 
    5. 以不可靠的方式存取或者复制内存缓冲区。 
    6. 编译器设置的内存缓冲区太靠近关键数据结构。
    2.至于如何避免内存溢出,就是做到避免上面的问题就可以了3.java 内存溢出的问题,解决方法
    一 调整 虚拟机参数
    二 立即 释放无用的对象
    三 利用序列化和反序列化技术
      

  7.   

    “立即 释放无用的对象”是要在代码中自己控制,不能通过辅助工具或命令清除。我觉得楼主的思路有一点问题,内存溢出的问题一般都要通过修改环境参数或修改程序来解决,并不能通过辅助工具或命令清除。但是内存泄漏则一定是代码问题,必须要修改代码才能解决。“利用序列化和反序列化技术”这个也是要通过程序将一部分放在内存中的对象,持久化到硬盘,然后需要的时候再读回来。这种策略一般不常用,而且通常是由操作系统或jvm来完成的。