nested exception is java.lang.StackOverflowError解析

背景介绍:项目是微服务的,使用docker容器,使用jenkins部署。测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了。报错如下:是栈溢出了,一般

大家好,又见面了,我是全栈君。

背景介绍:

项目是微服务的,使用docker容器,使用jenkins部署。测试环境有个公共服务一直以来都能正常发布,突然有一天不行了,经常发布失败,然后多发布几次就好了。

报错如下:

nested exception is java.lang.StackOverflowError解析

 

 

 是栈溢出了,一般是新代码有死循环会出现。但是本地启动没问题并且环境上多发几次也能成功,说明没有死循环,肯定是其他原因。

分析问题:

Java运行时数据区分5部分:

nested exception is java.lang.StackOverflowError解析

 

 

 从报错上来看是虚拟机栈溢出。

虚拟机栈是属于线程私有的,每个线程都会有一个虚拟机栈,随线程的创建而创建,消失而消失。它由一个个的栈帧组成,线程每次调用一个方法,就会有一个栈帧生成,并压栈。方法调用完之后,栈帧则出栈。当栈的深度不够,即栈的大小不足以放下所有的栈帧的时候,就会抛栈溢出的异常。

问题明确了,是栈的大小不够。

解决问题:

要把栈大小设置的大一点,要设置的大一点首先要知道目前是多大。项目未对虚拟机栈的大小作设定,也就是说目前的大小是默认值。

JDK5之后每个栈大小是1M,之前是256k。我们用的是JDK8,那么大小就是1M。要把栈大小设成大于1M的值。但是又不能设置太大,因为如果单个线程栈太大,就会限制最大线程数量。

项目没有高并发的情况,所以就先设置成2M。设置方法,在JVM启动参数里面加上 -Xss2m

问题解决,再也没出现过问题。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120880.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • social engineering databese_social engineering attack

    social engineering databese_social engineering attack请不要用于非法用途!!!(全部搜集自互联网,作者不负法律责任,不能保证可用性)QQ群:https://qqgroup.insight-labs.orghttps://s3.amazonaws.com/qqqun./index.html(与insight-labs类似)www.weigongkai.comhttp://qun.594sgk.c…

    2022年10月5日
    0
  • 使用joi来验证数据模型[通俗易懂]

    使用joi来验证数据模型[通俗易懂]我们用nodejs实现一些功能时,往往需要对用户输入的数据进行验证。然而,验证是一件麻烦的事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用的做法是使用正则,正则表达式

    2022年8月1日
    13
  • SpringMVC框架介绍[通俗易懂]

    SpringMVC框架介绍[通俗易懂]史上最全最强SpringMVC详细示例实战教程SpringMVC学习笔记—-一、SpringMVC基础入门,创建一个HelloWorld程序1.首先,导入SpringMVC需要的jar包。2.添加Web.xml配置文件中关于SpringMVC的配置springmvcorg.springframework.web.servlet.Dispatche…

    2022年6月7日
    32
  • PHP表单数据写入MySQL代码

    参考:http://www.cnblogs.com/roucheng/p/phpmysql.html上面的代码用不同格式,不知道哪种格式更好

    2021年12月25日
    41
  • Laravel5.2 发送邮件(smtp方式最简单的讲解!)-邮件部分

    Laravel5.2 发送邮件(smtp方式最简单的讲解!)-邮件部分

    2021年10月24日
    49
  • java sort排序[通俗易懂]

    java sort排序[通俗易懂]栗子默认的sort方法,根据元素的自然顺序,将指定的列表按升序排序。第二个方法,根据指定比较器产生的顺序对指定的列表进行排序。快速记忆法参考当前对象与后一个对象进行比较,如果比较结果为1进行交换,其他不进行交换。当后一个对象比当前对象大,返回结果值为1时,前后交换,说明是倒序排列。当后一个对象比当前对象小,返回结果值为1时,前后交换,说明是升序排列。//Integ…

    2022年7月15日
    11

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号