Java虚拟机栈 和 方法区 的联系
1.Java虚拟机栈
- java方法执行时的内存模型
1.1 栈帧
- 每个方法都会在虚拟机栈中创建一个对应的栈帧,用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
- 一个方法的调用到结束就对应这一个栈帧从虚拟机栈入栈到出栈。
1.2 局部变量表
- 存放编译期可知在方法中各种基本数据类型和对象的引用,基本数据类型直接存值(字面量),引用类型存指向对象的指针或者代表对象的句柄或者与对象位置有关的信息。
1.2.1 double long 型数值会占据2个局部变量空间(slot)其余数据类型只占一个。
1.2.2 局部变量表所需空间在编译期就已经确定下来了,进入一个方法在Java虚拟机栈的栈帧中分配的局部变量表大小是不会在变得。
2.方法区
- 存已经被虚拟机加载的类信息(Class对象)、常量、静态变量、即时编译器JIT编译过后的代码数据。如 a.f() 中a ,f 都是字符常量,都在方法区中。
- jdk 1.7、1.8 对方法区做出了修改,1.8 取消了方法区。
- 1.7开始把方法区中的部分区域移到了其他地方,如字符串常量池移入到堆中。
2.1 方法区被Java虚拟机规范描述为堆的一个逻辑部分,但它不是堆,有一个别名叫非堆Non-Heap
2.2 jdk1.6 及之前方法区位于永久代(PermGen),永久代和堆相互隔离。
2.3 方法区可以不需要连续的内存空间,也可以固定大小,也可以扩展,也可以不实现垃圾收集,如果实现则主要针对常量池的回收和类型的卸载。
2.41.8废弃永久代的原因:由于永久代内存经常不够用或发生内存泄露,爆出异常java.lang.OutOfMemoryErroy。元空间的本质和永久代类似。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。也就是不局限与jvm可以使用系统的内存。理论上取决于32位/64位系统可虚拟的内存大小。
Java虚拟机栈 和 方法区 的联系的更多相关文章
- Java虚拟机栈---本地方法栈
1.Java虚拟机栈(Java Virtual Machine Stacks) 线程私有,它的生命周期与线程相同.描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack ...
- HotSpot Java虚拟机中的“方法区”“持久代”“元数据区”的关系?
Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen).也称为方法区.Oracle JDK8的HotSpot ...
- 【转】 Java虚拟机内存的堆区(heap),栈区(stack)和静态区(static/method)
JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令 ...
- 《深入理解Java虚拟机》(二)Java虚拟机运行时数据区
Java虚拟机运行时数据区 详解 2.1 概述 本文参考的是周志明的 <深入理解Java虚拟机>第二章 ,为了整理思路,简单记录一下,方便后期查阅. 2.2 运行时数据区域 Java虚拟机 ...
- jvm内存模型中-栈,方法区,程序计数器是线程安全的
文章转自 https://www.cnblogs.com/myna/p/7567889.html 引文 JDK7及之前版本的方法区(Method Area)和Java堆一样,是各个线程共享的内存区域 ...
- JVM内存初学 堆、栈、方法区
转自: http://www.open-open.com/lib/view/open1432200119489.html 这两天看了一下深入浅出JVM这本书,推荐给高级的java程序员去看,对你了解J ...
- Java虚拟机运行时数据区
运行时数据区程序计数器Java虚拟机栈本地方法栈Java堆(GC堆)方法区运行时常量池 运行时数据区 Java虚拟机在运行Java程序时,会将它所管理的内存划分为若干个内存区域.这些数据区域有各自的用 ...
- 【JVM从小白学成大佬】2.Java虚拟机运行时数据区
目录 1.运行时数据区介绍 2.堆(Heap) 是否可能有两个对象共用一段内存的事故? 3.方法区(Method Area) 4.程序计数器(Program Counter Register) 5.虚 ...
- 【JVM学习】2.Java虚拟机运行时数据区
来源: 公众号: 猿人谷 这里我们先说句题外话,相信大家在面试中经常被问到介绍Java内存模型,我在面试别人时也会经常问这个问题.但是,往往都会令我比较尴尬,我还话音未落,面试者就会"背诵& ...
随机推荐
- BZOJ 4595 SHOI2015 激光发生器 射线,线段,偏转
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4595 题意概述: 给出一条射线和N条线段,射线遇到线段会发生反射,令入射角alpha,出射 ...
- Xcode 自动打包之旅【本文摘自智车芯官网】
由于公司项目很多,作为iOS端的开发工程师,在打包和上传App Store过程中超级费时,而且往往会有频繁更改需求重新打包.上传的情况.这些过程让我不胜其烦.之前有听说过自动打包,一直没有时间尝试,此 ...
- 搭建springmvc项目没扫描到mapper和service
严重: Servlet.service() for servlet [spring] in context with path [/springmvc-demo] threw exceptionorg ...
- python的三种控制流
什么是控制流 >>控制代码执行顺序的语句 >>python中有哪些控制流 >>顺序结构 >>> a = 7 >>> print( ...
- PAT 1015 德才论
https://pintia.cn/problem-sets/994805260223102976/problems/994805307551629312 宋代史学家司马光在<资治通鉴>中 ...
- java解析XML的方法
1.DOM 实现方法 xml文件 <?xml version="1.0" encoding="utf-8"?> <Accounts> & ...
- jsp实用过滤器写法
使用过滤器来给servlet设置编码 public class CharacterEncodingFilter implements Filter{ @Override public void des ...
- 做一个iframe的弹出框
群里有个人想在微信页面里面加弹出框.作为前端的我,想着不可能这样做.后来一个人说了: A:如果对方没有防盗链的话,你可以建个页面,内置iframe 到他的页面,然后把url 的参数也传入你的ifram ...
- JS判断页面是否加载完成
用 document.readyState == "complete" 判断页面是否加载完成 传回XML 文件资料的目前状况. 基本语法intState = xmlDocument ...
- BZOJ4481 JSOI2015非诚勿扰(概率期望+树状数组)
首先求出每个女性接受某个男性的概率.这个概率显然是一个无穷等比数列求和. 然后按编号从小到大考虑每个女性,维护出每个男性被选择的期望次数,BIT上查询后缀和即可. 需要long double. #in ...