zoukankan      html  css  js  c++  java
  • 生产问题之StackOverflowError异常小记

      印象中,这是项目中首次遇到 StackOverflowError,在此做个笔记。

      (吃饭回来写)

      ……

      吃饭回来后,尝试把代码回退来分析异常产生原因,然而却无法复现这个栈溢出异常……醉了

      有缘再见再写吧

     -------------------------------------------------

      索性做点栈溢出相关知识点笔记吧:

    StackOverFlowError 的分析和理解

    1. 在java虚拟机规范中,定义了在虚拟机栈和本地方法栈中会产生 StackOverflowError

    2. 虚拟机栈和本地方法栈一般就是我们说的java内存管理中的栈

    3. 虚拟机栈和本地方法栈是线程之间的独立内存,每一个线程在创建时,java虚拟机都会给该线程分配一块独立的内存区域,一般将此内存区域划分为虚拟机栈,本地方法栈,程序计数器

    4. 虚拟机栈中存储了方法执行时相关信息,每个方法在调用时都会在虚拟机栈中创建一个方法帧,方法帧中包含了局部变量,操作数,动态链接,方法出口等信息

    5. 本地方法栈和虚拟机栈基本相同,不同的是本地方法栈是针对线程中的native方法

    6. 程序计数器包含了一个程序执行指针,指向了字节码当前执行的行数

    7. 在java虚拟机规范中,虚拟机栈和本地方法栈都会出现StackOverflowError和OutofMemoryError,程序计数器是java虚拟机中唯一一块不会产生error的内存区域

    8. StackOverflowError代表的是,当栈深度超过虚拟机分配给线程的栈大小时就会出现此error

    9. OutofMemoryError代表的是,当再申请新的内存时,虚拟机分配给线程的内存大小中无法再分配新的内存,就会出现此error

    10. -Xss1024M虚拟机参数可以设置虚拟机分配给每个线程的内存大小,程序计数器占很小的内存(可以忽略),一般此内存和线程栈内存相等

    11. 在HotSpot虚拟机中,是将虚拟机栈和本地方法栈合二为一的

  • 相关阅读:
    《学技术练英语》PPT分享
    某网站漏洞排查经验
    【原创】如何写一个框架:模式
    【原创】如何写一个框架:步骤(下)
    【原创】如何写一个框架:步骤(上)
    CentOS 6.5 x64相关安全,优化配置
    CentOS 6.5 x64下查看服务版本
    Xshell设置密钥登录CentOS6.5_64位(文字命令版)
    CentOS 6.5 x64下安装宝塔面板、阿里安骑士
    CentOS 6.5 x64下查找依赖包,或用YUM安装
  • 原文地址:https://www.cnblogs.com/jasonZh/p/10614722.html
Copyright © 2011-2022 走看看