JVM虚拟机
文章平均质量分 74
only-code
热爱编程的小小程序员
展开
-
JVM内部线程之间的调用问题
线程 线程指的是一个线程实体。JVM允许一个程序并发执行多个线程。 首先创建的是操作系统原生线程,Java线程结束后,原生线程随之被回收。 操作系统负责调度所有线程,并把它们分配到任何可用的cpu上。 执行过程: 原生线程(初始化完毕) Java线程(调用run()方法) 确认是否终止JVM进程(由原生线程决定,run()返回且未捕获异常;线程是最后一个非守护线程)——> 释放原生线程和Java线程的所有资源 JVM系统线程 很多线程在后台运行。这些线程与main函数的主线程原创 2022-04-02 18:58:46 · 653 阅读 · 0 评论 -
JVM工作原理
流程:java源文件经过前端编译器(javac或ECJ)将.java文件编译为.class字节码文件,然后JRE加载.class文件,载入系统分配给JVM的内存区,然后执行引擎解释或编译类文件,再由即时编译器将字节码转换为机器码。 目录 类加载 运行时数据区 类加载 将类的字节码文件(.class)中的二进制数据读入内存,将其放在运行时数据区的方法区内,然后在堆上创建java.lang.Class对象,封装类在方法区内的数据结构。类加载的最终产品是位于堆...原创 2022-03-31 19:29:38 · 266 阅读 · 0 评论 -
JVM方法的在虚拟机栈执行过程以及java反汇编
目录 反汇编 1.什么是slot? 2.Java字节码指令格式 3.iconst_ 局部变量表的第一个变量 栈中可能出现的异常 栈运行原理 前面我们讲到栈桢的主要结构为:局部变量表、操作数栈、动态链接和方法返回地址。 如下图: 这篇我们将要通过反汇编来仔细了解代码在JVM内部的执行过程以及相关的存储原理。 反汇编 也可以叫做反编译,简单来说就是将编译生成的class文件翻译成程序员看得懂的文件 之前说到过: 局部变量表中的变量不可以直接使用,必须通过相关指令...原创 2022-03-30 19:05:01 · 1330 阅读 · 0 评论 -
JVM虚拟机栈结构
在说到虚拟机栈时首先要提出一个重要的观点:JVM是基于栈的! 虚拟机栈 每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的 Java 方法调用。虚拟机栈的栈元素是栈帧,当有一个方法被调用时就代表这个方法的栈帧入栈;当这个方法返回时就代表栈帧出栈。生命周期和线程一致,也就是线程结束了,该虚拟机栈也销毁了。对于栈来说不存在垃圾回收问题(栈存在溢出的情况)。 栈帧:理解为方法的运行空间,包括: 局部变量表 方法中定义的局部变量以及方法的...原创 2022-03-29 19:10:41 · 503 阅读 · 0 评论 -
JVM对象的创建过程(通俗易懂)
对象的创建 虚拟机中对象的创建过程: 对象检查:当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 对象创建:类加载检查通过后,虚拟机为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定。(Java堆的内存分配:由于Java堆内存并不规则,已使用的、未使用的内存交杂在一起,没有办法简单进行“指针碰撞”,虚拟机必须维护一原创 2022-03-29 18:42:07 · 1919 阅读 · 1 评论 -
JVM运行时数据区
运行时数据区 概述:Java虚拟机在运行时会将他所管理的内存分为不同的数据区域。有的区域随着虚拟机的启动而存在;有的区域随着用户进程的进行和结束而开创和销毁。 程序计数器:较小的内存区域 它可以看作是当前线程所执行的 字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器 的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处 理、线程恢复等基础功能都需要依赖这个计数器来完成。每个线程都有一个独立的程序计...原创 2022-03-27 18:50:25 · 1401 阅读 · 0 评论 -
JVM虚拟机内存区域划分(快速理解)
JVM内部体系结构分为三部分 1.类加载器(ClassLoader)子系统。 2.执行引擎。 3.运行时数据区。 首先我们要知道当我们写完代码之后所保存的.java文件是如何经过虚拟机的处理再生成最后的01001010这样的字节码文件的,如下图: .java文件经过编译器编译得到.class文件(编译阶段不涉及JVM) 编译成功后运行程序,此时实际上就是把.class文件送入JVM 经过JVM的处理最后生成计算机能”看得懂“的文件 那么我们现在的主题就是研究研究JVM的内存区域(...原创 2022-03-27 17:20:01 · 147 阅读 · 0 评论