ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

简单了解java虚拟机

2020-03-09 20:01:43  阅读:172  来源: 互联网

标签:java 虚拟机 计数器 线程 内存 简单 方法


JVM运行时数据区由方法区、本地方法栈、虚拟机栈、程序计数器、堆5部分组成。如下图所示

方法区:方法区与java堆栈一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等等。
本地方法栈:本地方法栈和虚拟机栈差不多,只不过java虚拟机栈执行java的方法,本地方法区执行的是native方法而已,有的虚拟机把本地方法栈和虚拟机栈合二为一。
java虚拟机栈:java虚拟机栈和程序计数器一样的,线程都是私有的,它的生命周期与线程一样。
java虚拟机栈描述的是java方法执行的内存模型,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作栈、动态链接、方法出口等信息。每一个方法被调用直至执行完成的过程就对应着一个栈在虚拟机中从入栈到出栈的过程。
程序计数器:程序计数器是一个很小的内存空间,它的作用就是当前线程所执行的字节码行号的指示器。
在Hotspot虚拟机中字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理等等。
java堆:堆中所有的线程都共享一个内存区域,在虚拟机启动的时候就被创建,此内存区域唯一的目的就是存放对象实例,几乎所有的对象实例都在这里分配。同时java堆也是GC管理的主要区域,有时候也叫GC堆,java堆可以分为新生代和老年代,Eden空间,from Survivor空间,To Survivor空间。新生代和Eden空间采用的GC算法【主要是分代收集算法】不一样。

参考博文:https://www.cnblogs.com/honey01/p/9475726.html

标签:java,虚拟机,计数器,线程,内存,简单,方法
来源: https://www.cnblogs.com/jasonboren/p/12450634.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有