运行时栈帧结构 栈帧时用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态链接、和方法返回地址等信息。 局部变量表 局部变量表的容量以变量槽为最小单位。每个变量槽应该能存放一个boolean、byte、char、 ...
分类:
其他好文 时间:
2020-03-31 14:06:10
阅读次数:
59
JVM 一、概念虚拟机:通过软件模拟的具有完整硬件功能的运行在一个完全隔离环境中的完整操作系统。JVM:软件虚拟Java字节码指令集。HoSpot是Java默认的虚拟机。二、Java内存区域与内存溢出异常Java虚拟机所管理的内存包括如下几个运行时数据区域:(1)线程私有区域(随线程的创建与销毁而创 ...
分类:
编程语言 时间:
2020-03-30 21:31:01
阅读次数:
95
一、JVM基础(JVM是什么? JRE是什么? JDK是什么?) a) JVM是什么? 编写的Java文件编译成class文件,class文件放入JVM中转义机器码,让机器执行 i. Java跨平台:一次编译到处运行原理,是因为安装了不同文件操作系统的JDK(JVM), 字节码(class)文件适配 ...
分类:
其他好文 时间:
2020-03-29 18:12:47
阅读次数:
68
内存区域划分 1.程序计数器:当前线程的正在执行的字节码指示器 2.虚拟机栈和本地方法栈:虚拟机栈存储局部变量表(包括方法入参和布局变量)、操作数栈、方法返回地址(调用者的栈帧,包括return返回和异常返回)等 3.堆:为几乎所有对象实例分配内存的区域 4.方法区:用于存储已被虚拟机加载的类信息、 ...
分类:
其他好文 时间:
2020-03-28 20:11:44
阅读次数:
83
本文仅作为复习清单使用 类生命周期 加载 验证 准备 解析 初始化 使用 卸载 常量优化 常量传播 常量折叠 类的加载 通过全限定名获取二进制字节流 将静态存储结构转化为方法区的运行时数据结构 生成Class对象 验证过程(可关闭) 文件格式验证 元数据验证 字节码验证 符号引用验证 准备 分配内存 ...
分类:
编程语言 时间:
2020-03-28 13:11:09
阅读次数:
73
Java第一章 1. java分类:数据库设计相关(JDBC) Web设计(JSP) Android 数据交换技术(XML) Jave EE 我们学的叫JAVA S 2. java的特点:简单;面向对象;平台无关;多线程;动态(jdk jvm jre关系) 3. 系统环境的设置(JAVA_HOME) ...
分类:
编程语言 时间:
2020-03-28 13:09:28
阅读次数:
75
指令重排的分类:编译期重排序和运行时重排序 在JVM编译时期或者CPU执行JVM字节码时期,对现有的指令进行重排序,主要目的为了优化运行速度(在不改变程序运行结果的前提下) int a = 3 //1 int b = 5; //2 int c = a + b; //3 虽然说指令重排可以调高程序的执 ...
分类:
编程语言 时间:
2020-03-27 13:14:41
阅读次数:
91
一、啥是反射? 通过反射机制加载一个class字节码文件,获得并调用任意一个类的所有属性和方法。 二、反射能干啥? 在运行时判断任意一个对象所属的类 在运行时构造任意一个类的对象 在运行时判断任意一个类所具有的成员变量和方法 在运行时调用任意一个对象的方法 三、干一干试试看! 1. Animal样本 ...
分类:
其他好文 时间:
2020-03-24 00:59:29
阅读次数:
64
[toc] 前言 在阿里巴巴Java开发手册中,有下面这样的规定: 这篇文章我们就来深入探讨其中的原因。 正文 为什么结果如此不同? 我们先来看看前言中的反例会出现什么意料之外的结果: 仅仅是remove的元素不同,为什么会出现如此不同的结果呢?我们反编译上面报错的字节码文件可得: 通过这个反编译结 ...
分类:
其他好文 时间:
2020-03-23 15:13:17
阅读次数:
58
或许你经常被问到? Volatile关键字有何作用? 实现这些作用的底层如何实现? Volatile能够保障可见性、有序性?原子性吗? 前言 我们都知道,Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用 ...
分类:
编程语言 时间:
2020-03-22 17:57:53
阅读次数:
78