分析java内存溢出
来源:互联网 发布:ubuntu软件下载 编辑:程序博客网 时间:2024/06/03 00:32
代码如下:
private static Test [] test = null;public static void test(int count){if(count<10000000){count++;test = new Test[count];}System.out.println("count:"+count+" size:"+test.length);test(count);}public static void main(String... args){test(0);}
注:此文假设代码没有问题。
1:关于java栈的内存溢出
1.1:java.lang.StackOverflowError
此内存溢出说明,java栈的设置太小,我们可以借助-Xss这个参数模拟一下此异常,-Xss是用来设置栈的大小。右键 run as configurations,如下图:
然后应用,然后run,我们发现控制台报错,如下:
count:892 size:892count:893 size:893count:894 size:894Exception in thread "main" java.lang.StackOverflowErrorat sun.nio.cs.UTF_8.updatePositions(UTF_8.java:58)at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:392)at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447)
我们可以看到到894次的时候,报错了。我们可以更改-Xss的值,为-Xss100k然后再运行一次,输入如下:
count:1925 size:1925count:1926 size:1926count:1927 size:1927count:1928 size:1928Exception in thread "main" java.lang.StackOverflowErrorat sun.nio.cs.UTF_8.updatePositions(UTF_8.java:58)at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:392)at sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447)
很明显count的值增大了不少。
1.2:java.lang.OutOfMemoryError: unable to create new native thread
此异常说明,java栈的值设置的太大,以至于在创建线程,分配栈内存的时候发现系统内存小于设置的栈内存大小。我们可以按照上面的运行方式把-Xss的值设置成500m,如果你的电脑设置成500m后没有报错,那么就继续增大。我们看下控制台输出,如下:
Error occurred during initialization of VMjava.lang.OutOfMemoryError: unable to create new native threadat java.lang.Thread.start0(Native Method)at java.lang.Thread.start(Thread.java:597)at java.lang.ref.Finalizer.<clinit>(Finalizer.java:176)
2:java堆的内存溢出
2.1:java.lang.OutOfMemoryError: Java heap space
此异常说明java堆设置的太小,我们可以用-Xms 和-Xmx来设置。具体就不再这里说明了。
- Java 内存溢出分析
- 分析java内存溢出
- Java内存溢出分析
- java内存溢出分析
- Java内存溢出分析
- Java内存溢出分析
- java内存溢出分析
- JAVA 内存溢出 分析
- java内存溢出分析工具
- java内存溢出分析工具
- java 内存溢出分析方法
- java内存溢出分析方法
- JAVA程序内存溢出问题的分析
- JProfiler - JAVA内存溢出/CPU占用率分析
- Java内存溢出的分析和解决
- Java内存溢出异常的分析过程
- JAVA程序内存溢出问题的分析
- Java内存溢出错误:OutOfMemoryError异常分析
- 电商项目笔记之六:订单操作
- 第3章:几何方面:点是否在三角形内?
- Flex 组件居中
- linux下删除乱码文件
- 802.11系列无线网络经验
- 分析java内存溢出
- struts2 OGNL
- 键盘事件捕获
- curl如何处理cookie
- [iPhone高级] 基于XMPP的IOS聊天客户端程序(IOS端一)
- Generic(泛型)
- 多国语言版快速解决方法
- ASM 介绍
- 在textarea中插入图片的办法(转载)