java堆溢出和栈溢出

简介: java堆溢出和栈溢出

一、堆溢出

import java.util.ArrayList;
import java.util.List;
 
public class Demo_071202 {
    public static void main(String[] args) {
        List<Test> list=new ArrayList<>();
        while (true){
            list.add(new Test());
        }
 
    }
    static  class Test{}
}

设置JVM初始堆空间和最大堆空间,堆溢出生成快照。

-Xms20M -Xmx20M -XX:+HeapDumpOnOutOfMemoryError

设置虚拟机参数

java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid21336.hprof ...
Heap dump file created [22149788 bytes in 0.062 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
  at java.base/java.util.Arrays.copyOf(Arrays.java:3720)
  at java.base/java.util.Arrays.copyOf(Arrays.java:3689)
  at java.base/java.util.ArrayList.grow(ArrayList.java:238)
  at java.base/java.util.ArrayList.grow(ArrayList.java:243)
  at java.base/java.util.ArrayList.add(ArrayList.java:486)
  at java.base/java.util.ArrayList.add(ArrayList.java:499)
  at com.demo.controller.Demo_071202.main(Demo_071202.java:10)

二、栈溢出

public class Demo_071203 {
    public static void main(String[] args) {
        test();
    }
    public static void test(){
        test();
    }
}
Exception in thread "main" java.lang.StackOverflowError
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)
  at com.demo.controller.Demo_071203.test(Demo_071203.java:8)

 

目录
相关文章
|
5天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
16 2
|
6天前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
20 3
|
8天前
|
算法 Java 机器人
Java数据结构与算法:最大堆
Java数据结构与算法:最大堆
|
8天前
|
算法 Java 机器人
Java数据结构与算法:最小堆
Java数据结构与算法:最小堆
|
12天前
|
存储 Java 开发者
【Java】Java中栈溢出的常见情况
【Java】Java中栈溢出的常见情况
13 4
|
4天前
|
存储 监控 算法
Java中的内存管理:从堆到栈的深入解析
Java中的内存管理:从堆到栈的深入解析
|
4天前
|
Java
数组栈(java)
数组栈(java)
8 0
|
28天前
|
Java
Java栈(Stack)深度解析与实现
Java栈(Stack)深度解析与实现
41 1
|
9天前
|
算法 Java 编译器
Java数据结构与算法:线性数据结构之栈
Java数据结构与算法:线性数据结构之栈
|
1月前
|
Java 索引
Java数据结构——栈
Java数据结构——栈
27 1