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);
}
}
head.getPrior()代码在哪里?其中是不是有递归调用自身的代码造成内存溢出
如果你用win
/tomcat/bin/catalina.bat 加上下面的命令:
set JAVA_OPTS=-Xms32m -Xmx256m
如果你用unix/linux
/tomcat/bin/catalina.sh 加上下面的命令:
JAVA_OPTS="-Xms32m -Xmx256m"
是否有递归调用
是否有大量循环或死循环
全局变量是否过多
数组、List、map数据是否过大
使用DDMS工具进行查找大概出现栈溢出的位置
使用jdk提供的jstack在dos窗口进行堆栈的状态查看
考虑下是否在运行的时候,是否进行了扩容的操作
应该是跑了一会儿才会报吧,预估是死循环了。