ICode9

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

【JVM】关于JVM,你需要掌握这些 | 一文彻底吃透JVM系列

2022-11-05 13:41:57  阅读:340  来源: 互联网

标签:JVM Java 程序开发 语言 虚拟机 数据 Native  链接


【JVM】关于JVM,你需要掌握这些 | 一文彻底吃透JVM系列

JDK 是什么?
JDK 是用于支持 Java 程序开发的最小环境。

Java 程序设计语言
Java 虚拟机
Java API类库
JRE 是什么?
JRE 是支持 Java 程序运行的标准环境。

Java SE API 子集
Java 虚拟机
Java历史版本的特性?
Java Version SE 5.0
引入泛型;
增强循环,可以使用迭代方式;
自动装箱与自动拆箱;
类型安全的枚举;
可变参数;
静态引入;
元数据(注解);
引入Instrumentation。
Java Version SE 6
支持脚本语言;
引入JDBC 4.0 API;
引入Java Compiler API;
可插拔注解;
增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持;
继承Web Services;
做了很多优化。
Java Version SE 7
switch语句块中允许以字符串作为分支条件;
在创建泛型对象时应用类型推断;
在一个语句块中捕获多种异常;
支持动态语言;
支持try-with-resources;
引入Java NIO.2开发包;
数值类型可以用2进制字符串表示,并且可以在字符串表示中添加下划线;
钻石型语法;
null值的自动处理。
Java 8
函数式接口
Lambda表达式
Stream API
接口的增强
时间日期增强API
重复注解与类型注解
默认方法与静态方法
Optional 容器类
运行时数据区域包括哪些?
程序计数器
Java 虚拟机栈
本地方法栈
Java 堆
方法区
运行时常量池
直接内存
程序计数器(线程私有)
程序计数器(Program Counter Register)是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。

由于 Java 虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的。为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各线程之间的计数器互不影响,独立存储。

如果线程正在执行的是一个 Java 方法,计数器记录的是正在执行的虚拟机字节码指令的地址;
如果正在执行的是 Native 方法,这个计数器的值为空。
程序计数器是唯一一个没有规定任何 OutOfMemoryError 的区域。

Java 虚拟机栈(线程私有)
Java 虚拟机栈(Java Virtual Machine Stacks)是线程私有的,生命周期与线程相同。
虚拟机栈描述的是 Java 方法执行的内存模型:每个方法被执行的时候都会创建一个栈帧(Stack Frame),存储

局部变量表
操作栈
动态链接
方法出口
每一个方法被调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。

标签:JVM,Java,程序开发,语言,虚拟机,数据,Native ,链接
来源:

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

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

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

ICode9版权所有