深入理解Java虚拟机jvm-栈溢出-栈帧过多java.lang.StackOverflowError

2023-11-09

示例

/**
 * 栈溢出
 * 栈帧过多,栈内存过小
 * 每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧[1](Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息
 * java.lang.StackOverflowError
 * 输出:stack length:2110
 */
public class Demo2 {
    private int stackLength = 1;

    public void stackLeak() {
        stackLength++;
        stackLeak();
    }

    public static void main(String[] args) {
        Demo2 oom = new Demo2();
        try {
            oom.stackLeak();
        } catch (Throwable e) {
            System.out.println("stack length:" + oom.stackLength);
            throw e;
        }
    }
}

虚拟机参数

-Xss128k
解释:

  • -Xss128k:线程栈的大小为128KB

结果

在这里插入图片描述

原因分析

此次异常,可以知道该线程在创建了2106个栈帧后再次创建栈帧时发生异常,原因是创建的栈帧的内存达到了最大值,无法申请新的内存,异常

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解Java虚拟机jvm-栈溢出-栈帧过多java.lang.StackOverflowError 的相关文章

随机推荐

  • vue 中使用微信分享接口(简单实用)

    前言 开发微信小程序时 基本上都要接入微信的SDK 而微信也提供了非常多的接口供我们去完成我们想要的功能 微信分享功能常常是我们在开发中常见的需求之一 本文将围绕微信分享接口使用展开 给自己以后碰到需求是查阅的同时 也希望对需要的朋友提供帮
  • mysql如何查询原理_mysql 原理 ~ sql查询语句

    一 普通sql执行的具体过程 1 连接器 管理连接 权限验证 2 分析器 词法分析 语法分析 比如 数据表和数据列是否存在 别名是否有歧义 是否符合标准sql语法等 3 优化器检测 执行计划生成 索引选择 4 执行器 1 判断是否拥有操作权
  • 使用PigLatin语句分析数据

    使用PigLatin语句分析数据 load 加载数据到表中 bag foreach 对表中的每一条数据tuple进行处理 filter 相当于where group by join 连接 多表查询 generate 提取列 union in
  • 华为手机文件存放目录

    1 手机通话录音 内部存储 gt Sounds gt CallRecord路径下面
  • Python基本数据类型

    Python基本数据类型 数据类型是每种编程语言必备属性 只有给数据赋予明确的数据类型 计算机才能对数据进行处理运算 因此 正确使用数据类型是十分必要的 不同的语言 数据类型类似 但具体表示方法有所不同 以下是Python编程常用的数据类型
  • 探索珠宝商城小程序:商家如何实现线上卖珠宝

    近期 微信小程序的发展势头强劲 各行各业都在积极开发自己的小程序 以适应这个数字化的时代 珠宝行业也不例外 许多珠宝品牌都已经推出了自己的小程序 为用户提供了更加便捷 个性化的购物体验 因此 制作一款珠宝商城小程序 不仅是顺应潮流的选择 也
  • go+goquery+chromedp爬虫实现对网页数据抓取

    安装 首先 需要安装两个包 1 goquery go get github com PuerkitoBio goquery goquery包主要用于搜索界面上的元素 获取里面的值 具体操作可以参考 飞雪无痕 的 golang goquery
  • IPv6头部

    一 IPv6数据包的结构 IPv6报文 分为三个部分 头部 扩展头 上层协议数据单元 IPv4报文 头部 上层协议数据单元 IPv6头部始终存在 大小固定40字节 扩展头可能有0个或多个 且长度不固定 二 IPv6头部 1 结构 2 域 P
  • ORALCE函数:LAG()和LEAD() 分析函数详解

    Lag和Lead分析函数可以在同一次查询中取出同一字段的前N行的数据 Lag 和后N行的数据 Lead 作为独立的列 在实际应用当中 若要用到取今天和昨天的某字段差值时 Lag和Lead函数的应用就显得尤为重要 当然 这种操作可以用表的自连
  • SpringBoot整合RabbitMQ详细案例(入门RabbitMQ看这一篇就够了)

    SpringBoot整合RabbitMQ详细案例 入门RabbitMQ看这一篇就够了 1 RabbitMQ的使用场景 1 1 异步处理 1 2 应用解耦 1 3 流量削峰 2 RabbitMQ 交换机介绍 2 1 Direct exchan
  • 第3课 微信开发者工具picker标签实现动态时间选择器与地区选择器:

    微信小程序picker标签实现动态时间选择器与地区选择器 运行效果如下 wxml代码如下
  • Vue实现搜索页面

    目录 一 效果 二 实现 一 效果 实现功能如下图所示 因为被腰斩 样式未调整 二 实现 直接上代码 pages Search vue 搜索页
  • remote: Support for password authentication was removed on August 13, 2021

    1 github在2021年8月14日七夕这天搞事情 如果这天你提交了github代码报错如下 问题 remote Support for password authentication was removed on August 13 2
  • 报错: ‘XXXX‘ is declared but its value is never read.Vetur(6133)

    引入的路径本没有问题 结果确报错 解决方法如下 1 在VScode工具的设置中找到设置 2 在搜索栏输入 vetur 并找到Vertur gt Validation Script 在比较靠下多滑动页面哦 3 最后关闭项目重新打开即可 报错消
  • 【C语言】如何使用 Visual studio 2019 编写,并编译和运行C代码?

    提示 该文章以 Visual studio 2019为例来进行说明 2019及以后的版本同样适用该文章 文章目录 一 创建一个新项目 二 在项目里创建一个源文件 三 编写C语言代码 四 编译和运行代码 五 将旧项目中的C文件添加到新项目中
  • [CISCN 2022 初赛]online_crt

    文章目录 涉及知识点 代码审计 解题过程 涉及知识点 CVE 2022 1292漏洞 OpenSSL ssrf 代码审计 app py源码 import datetime import json import os import socke
  • 权限篇

    权限篇 root 系统超级用户 UID为0 普通用户由root创建 UID从1000开始累计 系统中虚拟用户UID在1 999之间 由操作系创建 用户配置文件 etc passwd 新创建的用户 信息会追加到这个文件结尾 sbin nolo
  • Git更新国内清华源

    sudo sed i s http archive ubuntu com https mirrors tuna tsinghua edu cn g etc apt sources list sudo sed i s http securit
  • 浏览器network报错:ERR_CERT_AUTHORITY_INVALID

    1 今天遇到个问题在访问自己写的网站时 其中有个获取验证码功能 是后端Https接口 请求没到后端 浏览器报了Failed to load resource net ERR CERT AUTHORITY INVALID 临时解决办法 1 其
  • 深入理解Java虚拟机jvm-栈溢出-栈帧过多java.lang.StackOverflowError

    栈溢出 示例 虚拟机参数 结果 原因分析 示例 栈溢出 栈帧过多 栈内存过小 每个方法被执行的时候 Java虚拟机都会同步创建一个栈帧 1 Stack Frame 用于存储局部变量表 操作数栈 动态连接 方法出口等信息 java lang