Java创建双向循环链表报java.lang.OutOfMemoryError: Java heap space,是什么问题?
public class DoublyLinkedNode {
private char data;
private DoublyLinkedNode prior;
private DoublyLinkedNode next;

public DoublyLinkedNode() {
}

public DoublyLinkedNode(char data, DoublyLinkedNode prior, DoublyLinkedNode next) {
    this.data = data;
    this.prior = prior;
    this.next = next;
}
}
 /**
 * 线性表的链式存储结构-双向循环链表
 */
public class DoublyCircularLinkedList implements LinearLinkedList {

    private DoublyLinkedNode head;

    public DoublyCircularLinkedList() {
        head = new DoublyLinkedNode();
        head.setPrior(head);
        head.setNext(head);
    }

            /**
     * 尾插法建表
     *
     * @param data
     */
    @Override
    public void createListTail(char data) {
        DoublyLinkedNode temp = new DoublyLinkedNode(data, head.getPrior(), head);
        head.getPrior().setNext(temp);
        head.setPrior(temp);
    }
}

4个回答

head.getPrior()代码在哪里?其中是不是有递归调用自身的代码造成内存溢出

qq_33841411
qq_33841411 就是普通的get、set方法呀
大约一年之前 回复

如果你用win
/tomcat/bin/catalina.bat 加上下面的命令:
set JAVA_OPTS=-Xms32m -Xmx256m
如果你用unix/linux
/tomcat/bin/catalina.sh 加上下面的命令:
JAVA_OPTS="-Xms32m -Xmx256m"

qq_33841411
qq_33841411 这个应该是出现死循环了,和内存大小应该没什么关系,而且这个也不是用tomcat启动的呀
大约一年之前 回复

是否有递归调用
是否有大量循环或死循环
全局变量是否过多
数组、List、map数据是否过大
使用DDMS工具进行查找大概出现栈溢出的位置
使用jdk提供的jstack在dos窗口进行堆栈的状态查看
考虑下是否在运行的时候,是否进行了扩容的操作

应该是跑了一会儿才会报吧,预估是死循环了。

qq_33841411
qq_33841411 嗯,我也判断是死循环,但是看代码又找不出问题,我把代码都粘出来了
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!