1.Java栈内存不足
栈内存放中间变量,方法实参,返回值,引用类型的应用。栈中数据属于某个线程,线程独享,若中间处理过程过于复杂,需要大量站空间时,一定要调整java线程栈的大小 1.4 默认256k,1.5后默认1M,设置参数 -Xss1M(m)
异常 java.lang.StackOverflowError
使函数反复调用递归,使其栈内存耗尽
代码:
int sa=0;
public int digui(int a){
count++;
System.out.println(count);
return digui(a);
}
2.Java栈异常,不能创建线程
由于栈中数据属于某个线程,每个线程都拥有一个栈空间,若生成很多线程时,有可能是系统内存耗尽。 可以适当的减少线程数,或者减小每个线程的线程栈 调整参数 -Xss
异常 java.lang.OutOfMemoryError: unable to create new native thread
循环生成许多线程(适当提高-Xss值),是系统内存耗尽
代码 :
class Th1 extends Thread{
int num=0;
public Th1(int num){
this.num=num;
System.out.println(num+" "+sa);
}
public void run()
{
while(true){
System.out.println(num);
}
}
}
boolean b=true;
while(b){
Th t=new Th(a++);
t.start();
}
3.Java 堆溢出,常见异常
java 是纯面向对象的语言,其中所以的对象都是以某种方式,存储在Java堆中,若给java分配的内存较小时,极易出现此异常,可以通过参数-Xms10M 初始化堆内存 ,-Xmx,最大堆内存,(或者调整堆内存中各部分的比例,涉及java堆得细节可参考 java内存模型等资料)。
异常 java.lang.OutOfMemoryError: Java heap space
生成大数据量的对象(适当减小-Xmx),比如数组
Integer[]ii=new Integer[999999999];
栈内存放中间变量,方法实参,返回值,引用类型的应用。栈中数据属于某个线程,线程独享,若中间处理过程过于复杂,需要大量站空间时,一定要调整java线程栈的大小 1.4 默认256k,1.5后默认1M,设置参数 -Xss1M(m)
异常 java.lang.StackOverflowError
使函数反复调用递归,使其栈内存耗尽
代码:
int sa=0;
public int digui(int a){
count++;
System.out.println(count);
return digui(a);
}
2.Java栈异常,不能创建线程
由于栈中数据属于某个线程,每个线程都拥有一个栈空间,若生成很多线程时,有可能是系统内存耗尽。 可以适当的减少线程数,或者减小每个线程的线程栈 调整参数 -Xss
异常 java.lang.OutOfMemoryError: unable to create new native thread
循环生成许多线程(适当提高-Xss值),是系统内存耗尽
代码 :
class Th1 extends Thread{
int num=0;
public Th1(int num){
this.num=num;
System.out.println(num+" "+sa);
}
public void run()
{
while(true){
System.out.println(num);
}
}
}
boolean b=true;
while(b){
Th t=new Th(a++);
t.start();
}
3.Java 堆溢出,常见异常
java 是纯面向对象的语言,其中所以的对象都是以某种方式,存储在Java堆中,若给java分配的内存较小时,极易出现此异常,可以通过参数-Xms10M 初始化堆内存 ,-Xmx,最大堆内存,(或者调整堆内存中各部分的比例,涉及java堆得细节可参考 java内存模型等资料)。
异常 java.lang.OutOfMemoryError: Java heap space
生成大数据量的对象(适当减小-Xmx),比如数组
Integer[]ii=new Integer[999999999];