zoukankan      html  css  js  c++  java
  • Java 内存结构之虚拟机栈

    2.虚拟机栈

    • 定义:虚拟机栈(Java Virtual Machine Stacks)就是每个线程运行需要的内存空间,栈由一个一个的栈帧(Frame)组成,栈帧就是每个方法运行时需要的内存(方法的参数、局部变量、返回地址)
    • 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法

    问题分析

    • 垃圾回收是否涉及栈内存?不涉及
    • 栈内存分配越大越好吗?不是,设置大一点只不过是增加了递归调用的效率
    • 方法内的局部变量是否线程安全?
      • 如果方法内局部变量没有逃离方法的作用范围,它就是线程安全的
      • 如果局部变量引用了对象,并逃离方法的作用范围,需要考虑线程安全问题

    栈内存溢出

    • 栈帧过多会导致栈内存溢出(方法递归调用就会导致栈内存溢出)
    • 栈帧过大也会导致栈内存溢出(这种情况不太容易出现)
    • 两个类之间互相引用,在JSON格式转换的时候会出现递归调用,导致栈内存溢出
  • 相关阅读:
    web10 动态action的应用
    web09 struts2配置 struts2入门
    web 08 struts2入门 struts2配置 struts包
    web07-jdbcBookStore
    web06-PanduanLogin
    web05-CounterServlet
    web04-LoginServlet
    web03-OutputInfo
    web02-welcomeyou
    web01-helloworld
  • 原文地址:https://www.cnblogs.com/zxfei/p/11674793.html
Copyright © 2011-2022 走看看