博客
关于我
JVM之方法区与栈
阅读量:614 次
发布时间:2019-03-13

本文共 686 字,大约阅读时间需要 2 分钟。

JVM方法区与栈

现代程序执行环境中的虚拟机(JVM)内存管理极为复杂,其中方法区和栈是核心的存储区域。理解它们有助于优化程序性能、调试打错和解决内存泄漏问题。

一、方法区

方法区的作用是存储类的结构信息,包括静态变量、常量、构造方法和接口定义。其核心内容分为以下几个方面:

  • 共享性:方法区是所有线程共享的资源,存放的内容不会随线程消亡而销毁。
  • 存储内容:静态变量和常量存储在方法区,实例变量(如对象属性)存储在堆内。
  • 划分
    • 永久代 (
      )
      :在JDK 7及以上版本中应用。
    • 元空间 (
      )
      :在JDK 8及以上版本中使用,作为存储符号引用的区域。
  • 动态链接:通过栈帧中的引用于支持动态方法调用。
  • 晚期绑定:当方法在运行期确定时,绑定到具体的运行时类中。
  • 二、栈

    栈的作用是管理线程私有数据,用于程序运行和数据临时存储,主要功能包括:

  • 运行控制:栈帧控制方法的执行,管理方法调用和返回。
  • 数据存储:存储局部变量(方法参数和局部变量)、操作数(计算中间结果)等。
  • 栈帧结构:每个栈帧包含局部变量表和操作数栈,前者存储变量,后者协助计算。
  • 运行机制:首 Thread私有栈,其他线程若引用数据需艾克斯入其他机制。
  • 栈溢出:递归过度或栈容量超过限制导致的StackOverflowError。
  • 数据异常:操作数栈案例可能引发NoClassDefFoundError。
  • 三、方法区与栈的对比

    • 共享与私有:方法区共享,栈私有。
    • 存储内容:方法区存储符号和常量,栈存储局部变量和操作数。
    • 生命周期:方法区持续存留,栈随线程终止而释放。
    • 垃圾回收:栈无需专门回收,方法区常识不受影响。

    转载地址:http://ukkaz.baihongyu.com/

    你可能感兴趣的文章
    Openlayers高级交互(12/20):利用高德逆地理编码,点击位置,显示坐标和地址
    查看>>
    Openlayers高级交互(13/20):选择左右两部分的地图内容,横向卷帘
    查看>>
    Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    查看>>
    Openlayers高级交互(15/20):显示海量多边形,10ms加载完成
    查看>>
    Openlayers高级交互(16/20):两个多边形的交集、差集、并集处理
    查看>>
    Openlayers高级交互(17/20):通过坐标显示多边形,计算出最大幅宽
    查看>>
    Openlayers高级交互(18/20):根据feature,将图形适配到最可视化窗口
    查看>>
    Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
    查看>>
    Openlayers高级交互(2/20):清除所有图层的有效方法
    查看>>
    Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    查看>>
    Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    查看>>
    Openlayers高级交互(4/20):手绘多边形,导出KML文件,可以自定义name和style
    查看>>
    Openlayers高级交互(5/20):右键点击,获取该点下多个图层的feature信息
    查看>>
    Openlayers高级交互(6/20):绘制某点,判断它是否在一个电子围栏内
    查看>>
    Openlayers高级交互(7/20):点击某点弹出窗口,自动播放视频
    查看>>
    Openlayers高级交互(8/20):选取feature,平移feature
    查看>>
    Openlayers高级交互(9/20):编辑图形(放缩、平移、变形、旋转),停止编辑
    查看>>
    Openlayers:DMS-DD坐标形式互相转换
    查看>>
    openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
    查看>>
    OpenLDAP(2.4.3x)服务器搭建及配置说明
    查看>>