先看一下你的jvm设定的最大最小内存数,适当的增加内存给jvm,在运行他。如果总是在运行的时间长了才出现outofmemory,就是你的程序存在内存泄漏,有没有用的内存还没有释放。一般来讲出现这种情况都是因为程序没有优化好造成的。你找一个软件(bland optimizeit audit system selector )检查一下是否内存泄漏了,可以看到是什么应用了这么多的内存导致了溢出。

解决方案 »

  1.   

    我的这段代码大概如下:其中是vec是Vector类型的entry是自定义的对象,s2i是将String转化为int的函数,去掉这段代码就可以运行了,for (int i = 0; i < vec.size() - 1 ; i++ )
    {
    Entry this_entry = (Entry)vec.elementAt(i);
    Entry next_entry = (Entry)vec.elementAt(i+1);String this_s_time = this_entry.getStart_time();
    String this_e_time = this_entry.getEnd_time();
    int this_edaban = this_entry.getEdaban();
    String next_s_time = next_entry.getStart_time();
    String next_e_time = next_entry.getEnd_time();
    int next_edaban = next_entry.getEdaban();

    if (s2i(next_s_time) < s2i(this_e_time))
    {
       if (this_edaban < next_edaban)
    {
    next_entry.setStart_time(this_e_time);
    vec.setElementAt(next_entry, i+1);
    }
    else
    {
    this_entry.setEnd_time(next_s_time);
    vec.setElementAt(this_entry, i);
    }
    }
    if (s2i(next_s_time) > s2i(this_e_time))
    {int add_cellCount = getCellCount(next_s_time, this_e_time);
    Entry add_entry = new Entry(this_e_time, next_s_time, add_cellCount);
    vec.insertElementAt(add_entry, i+1);
    }}