jvm
文章平均质量分 90
三哥s
这个作者很懒,什么都没留下…
展开
-
java垃圾回收机制
Java内存结构分为:程序计数器、虚拟机栈、本地方法栈、堆、方法区,这个5个区域。程序计数器、虚拟机栈和本地方法栈随着线程而生,随着线程而灭。所以Java垃圾回收主要针对的是堆和方法区这两个内存,在jdk8版本后方法区(永久代)又被取消,所以Java垃圾回收主要针对堆内存。 程序在运行时,创建的所有的对象都在堆分配内存,所以Java回收的主要的就是无用的死掉的Java对象。那什么是无用的死掉的Java对象呢。Java是通过可达性分析算法判定对象是否存活,下面来介绍一下可达性分析算法: 把一些列对象作为根对象原创 2020-12-09 23:39:06 · 1374 阅读 · 0 评论 -
虚拟机jvm类加载机制
了解了Class文件结构和Class文件中存储的各类信息后,这些信息都是静态的存储在class文件中,class文件需要被加载到虚拟机中才能被运行和使用。那么虚拟机是如何加载的?Class文件中静态信息被加载后发生了什么变化,下文来探讨一下 虚拟机jvm类加载机制1、什么是类加载机制?2、什么时候开始类加载?3、类加载的过程?3.1 加载3.2 验证3.2.1 为什么要验证3.2.2.验证什么3.3 准备3.4 解析3.5 初始化 1原创 2020-06-30 20:14:28 · 400 阅读 · 0 评论 -
class文件结构详细解析
之前一直好奇java文件经过编译后生成的class文件,到底存储了什么信息?是如何被jvm识别并执行的?我们可不可以通过外部力量修改class文件内容,以致可以修改程序的运行?于是我带着种种疑问,开始研究class文件。参考《深入理解Java虚拟机》(周志鹏著) 在深入分析class文件之前,我们先来探讨class文件存在原因: 无关性的基石:Java刚开始诞生时的宣传口号“一次编写,到处运行”,开发者早就料想到,各种不用的硬件体系结构、各种不同的操作系统将来肯定会长期并存发展,实现跨平台的基础就是实现在操原创 2020-06-24 16:16:56 · 2479 阅读 · 5 评论 -
虚拟机栈(VM Stack)
虚拟机栈(VM Stack) 1.是线程私有的区域 2.和pc Register一样,跟线程生命周期相同,每个线程分配一个独立的vm stack 3.没执行一个方法都同步创建一个该方法的stack frame(栈帧),方法执行完毕的过程,就对应着一个栈帧在VM Stack中从入栈道出栈的过程。 4.每一个栈帧stack frame包含局部变量表、操作数栈、方法返回值、动态链接 5.局部变量表包含:基本数据类型、引用、returnaddress类型。是一组变量值存储空间,用于存放方法参数和方法内部定义的局原创 2020-06-10 16:10:42 · 1092 阅读 · 0 评论 -
虚拟机jvm:java对象的创建过程
java是一门面向对象的编程语言,java程序运行时无时无刻都有对象被创建。在语言层面上,创建对象仅仅是一个new关键字而已,而在虚拟机中对象的创建过程又是怎样呢? 注意:这里讨论的对象仅限于普通的java对象,不包括数组和Class对象 创建对象分以下几步: 1.验证对象类是否已经加载 当java虚拟机遇到一条字节码new指令时,首先检查这个指令的参数是否能在常量池中定位一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有先加载该类。 2.分配堆内存 类加.原创 2020-06-12 14:43:41 · 356 阅读 · 0 评论