JAVA内存异常简单实例
2011-12-11 19:14
295 查看
JAVA内存异常实例
1.java堆溢出OutOfMemoryError
import java.util.ArrayList;
import java.util.List;
/*
* VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
*/
public class HeapOOM {
static class OOMObject{
}
public static void main(String[] args) {
List<OOMObject> list = new ArrayList<OOMObject>();
while(true){
list.add(new OOMObject());
}
}
}
2.虚拟机栈和本地方法溢出
/*
* VM Args: -Xss128k
*/
public class JavaVMStackSOF {
private int stackLength = 1;
public void stackLeak(){
stackLength++;
stackLeak();
}
public static void main(String[] args) throws Throwable {
JavaVMStackSOF com = new JavaVMStackSOF();
try {
com.stackLeak();
} catch (Exception e) {
System.out.println("stack length:" +
com.stackLength);
throw e;
}
}
}
3.运行时常量溢出
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.List;
/*
* VM Args: -XX:PermSize=10M -XX:MaxPermSize=10M
*/
public class RuntimeConstantPoolOOM {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
int i = 0;
while(true){
//System.out.println("***i:" + i++);
list.add(String.valueOf(i++).intern());//不加intern这个方法就不会把字符串放到常量池
}
}
1.java堆溢出OutOfMemoryError
import java.util.ArrayList;
import java.util.List;
/*
* VM Args: -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError
*/
public class HeapOOM {
static class OOMObject{
}
public static void main(String[] args) {
List<OOMObject> list = new ArrayList<OOMObject>();
while(true){
list.add(new OOMObject());
}
}
}
2.虚拟机栈和本地方法溢出
/*
* VM Args: -Xss128k
*/
public class JavaVMStackSOF {
private int stackLength = 1;
public void stackLeak(){
stackLength++;
stackLeak();
}
public static void main(String[] args) throws Throwable {
JavaVMStackSOF com = new JavaVMStackSOF();
try {
com.stackLeak();
} catch (Exception e) {
System.out.println("stack length:" +
com.stackLength);
throw e;
}
}
}
3.运行时常量溢出
import java.util.ArrayList;
import java.util.List;
import java.util.ArrayList;
import java.util.List;
/*
* VM Args: -XX:PermSize=10M -XX:MaxPermSize=10M
*/
public class RuntimeConstantPoolOOM {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
int i = 0;
while(true){
//System.out.println("***i:" + i++);
list.add(String.valueOf(i++).intern());//不加intern这个方法就不会把字符串放到常量池
}
}
相关文章推荐
- java对异常泛型的简单实例
- java异常处理的简单实例和解释,自定义一个异常类
- 从简单实例看JAVA的异常处理机制。
- java语言搭建SSL的Socket并发送字符串消息(最简单应用实例/常见异常及解决)
- java 实现第二个实例实现Bank ,进行简单的注册,简单的异常的分析!
- Java 多线程ServerSocket通讯简单实例(基于TCP协议)
- Java WebService 简单实例
- 第二章 Java内存区域与内存溢出异常
- Java 数组分析及简单实例
- Java经典实例:实现一个简单堆栈
- 对Java的内存分配的简单了解(1)
- Java编写简单的自定义异常类
- JavaIO简单代码实例
- Java解压缩文件简单实例
- java操作mongoDB数据库的简单实例
- Java启动tomcat的简单实例
- [课本划重点]深入理解jvm-第2章 java内存区域与内存溢出异常(1)
- 微信公众账号开发简单实例【java】
- java简单实例
- Java基础--jvm(内存区域与内存溢出异常--运行时数据区域)