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

    2.虚拟机栈

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

    问题分析

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

    栈内存溢出

    • 栈帧过多会导致栈内存溢出(方法递归调用就会导致栈内存溢出)
    • 栈帧过大也会导致栈内存溢出(这种情况不太容易出现)
    • 两个类之间互相引用,在JSON格式转换的时候会出现递归调用,导致栈内存溢出
  • 相关阅读:
    hdu2089 不要62
    hdu4734 F(x)
    hdu3555 Bomb
    hdu3652 B-number
    hdu4352 XHXJ's LIS
    CodeForces 55D Beautiful numbers
    数位dp模板
    欧拉函数模板
    UVALive
    常用正则表达 (转)
  • 原文地址:https://www.cnblogs.com/zxfei/p/11674793.html
Copyright © 2011-2022 走看看