美文网首页
1.Java程序运行原理分析

1.Java程序运行原理分析

作者: 强某某 | 来源:发表于2020-03-03 14:58 被阅读0次
  1. class文件内容
    class文件包含Java程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流,
    中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一个标志。


    1.png
  1. JVM运行时数据区


    2.png

方法区:存储class信息
JVM用来存储加载的类信息,常量,静态变量,编译后的代码等数据
虚拟机规范中这是一个逻辑区划。具体实现根据不同虚拟机来实现。
如:oracle的HotSpot在java7中方法区放在永久代,java8放在元数据空间,并且
通过GC机制对这个区域进行管理

堆内存:存储根据类创建的对象
堆内存还可以细分为:老年代,新生代
JVM启动时创建,存放对象的实例。垃圾回收器主要就是管理堆内存。
如果满了,就会报出OOM异常

虚拟机栈:
每个线程都在这个空间有一个私有的空间。
线程栈由多个栈帧组成。
一个线程会执行一个或多个方法,一个方法对应一个栈帧
栈帧内容包含:局部变量表、操作数栈、动态链接、方法返回地址、附加信息等。
栈内存默认最大是1M,超出则抛出StackOverFlowError

本地方法栈:
和虚拟机栈功能类似,虚拟机栈是为虚拟机执行Java方法而准备的,本地方法栈是为虚拟机使用
Native本地方法而准备的。
虚拟机规划内有规定具体的实现,由不同的虚拟机厂商实现。
HotSpot虚拟机中虚拟机栈和本地方法栈的实现方式是一样的,同样超出后抛出StackOverFlowError

程序计数器:
记录当前线程执行字节码的位置,存储的是字节码指令地址,如果执行Native方法,则计数器值为空。
每个线程都在这个空间有一个私有空间,占用内存空间少。
CPU同一时间,只会执行一条线程中的指令。JVM多线程会轮流切换并分配CPU执行时间的方式。
线程切换后,需要程序计数器来恢复正确的执行位置(字节码指令地址)

线程独占:每个线程都会有它独立的空间,随线程生成周期创建和销毁。
线程共享:所有线程都能访问这块内存空间,随虚拟机或GC创建和销毁。

  1. 查看class文件内容


    3.png
4.png

常量池:


5.png
  1. 程序完整运行分析


    6.png
7.png 8.png

相关文章

  • 1.Java程序运行原理分析

    class文件内容class文件包含Java程序执行的字节码;数据严格按照格式紧凑排列在class文件中的二进制流...

  • java运行原理

    了解Java的工作原理以帮助自己深入理解java 1.java程序运行图示: 跨平台说明:java编译器 (编译)...

  • Hadoop学习-第二天(MapReduce原理及WordCou

    2018-07-01 1、给合WordCount程序分析MapReduce的运行原理 2、WordCount程序 ...

  • Java程序运行原理分析

    一. JVM原理 class文件内容 JVM运行时数据区 线程独占: 每个线程都会有它独立的空间,随线程的生命周而...

  • java程序运行原理分析

    什么是class文件 是jvm编译java代码后生成的字节码文件,包含java程序执行的字节码;数据严格按照格式紧...

  • Java 程序运行原理分析

    1. class 文件内容 class 文件包含JAVA程序执行的字节码;数据严格按照格式紧凑排列在class文件...

  • JAVA基础面试题(二)

    1.Java中的异常处理机制的简单原理和应用? 异常是指Java程序运行时(非编译)所发生的非正常情况或错...

  • JAVA程序运行原理分析(一)

    作为JAVA的开发人员,需要知道JAVA是如何运行的,这个需要好好思考下。 (一)class文件内容 class文...

  • JAVA 基础知识(一)

    1.Java代码运行原理 源代码文件(.java)——>java编译器(javac.exe)编译——>字节码文件(...

  • JavaSE之异常

    异常:运行期出现的错误。 1.Java异常是Java提供的用于处理程序中错误的一种机制,所谓错误是指在程序运行的过...

网友评论

      本文标题:1.Java程序运行原理分析

      本文链接:https://www.haomeiwen.com/subject/rifhlhtx.html