您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

有哪些情况会导致Java内存溢出?

2024/5/31 14:15:21发布19次查看
1、堆溢出,堆是存放实例对象的,但是这样堆区迟早会满。设置了堆区内存,创建就会抛出异常。
public class heapoom {    static class user {}    public static void main(string[] args) {         list<user> list = new arraylist<user>();            while (true) {                list.add(new user());         }    }}/*exception in thread main java.lang.outofmemoryerror:gc overhead limit exceededat com.fdd.test.heapoom.main(heapoom.java:11)*/
2、虚拟机栈和本地方法栈溢出
如果线程要求的堆栈深度大于虚拟机锁允许的深度,则抛出stackoverfloweror异常。
如果虚拟机在扩展堆栈时无法申请足够的存储空间,则会出现异常。
public class stackoutofmemoryerror {    public static void main(string[] args) {              test();    }    private static void go() {        system.out.println(stackoverflowerror异常);        test();    }}/*exception in thread main java.lang.stackoverflowerror    at sun.nio.cs.ext.doublebyte$encoder.encodeloop(doublebyte.java:617)    at java.nio.charset.charsetencoder.encode(charsetencoder.java:579)    at sun.nio.cs.streamencoder.implwrite(streamencoder.java:271)    at sun.nio.cs.streamencoder.write(streamencoder.java:125)    at java.io.outputstreamwriter.write(outputstreamwriter.java:207)    at java.io.bufferedwriter.flushbuffer(bufferedwriter.java:129)    at java.io.printstream.write(printstream.java:526)    at java.io.printstream.print(printstream.java:597)    at java.io.printstream.println(printstream.java:736)    at com.fdd.test.stackoutofmemoryerror.go(stackoutofmemoryerror.java:11)at com.fdd.test.stackoutofmemoryerror.go(stackoutofmemoryerror.java:13)*/
3、方法区和运行时常量池溢出
4、本机直接内存溢出
directmemory容量可通过-xx:maxdirectmemorysize指定,如不指定,默认与java堆的值(-xmx指定)相同。
以上就是有哪些情况会导致java内存溢出?的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product