JVM
文章平均质量分 68
收录自己平时学习和理解的JVM相关知识
走在学习路上的小腾
作为一个IT男,我坚信:
1.如果现在开始努力,最坏的结果无非就是大器晚成。
2.道阻且长,行则将至。行而不辍,未来可期。
3.不忘初心,以始为终。
展开
-
java内存模型(二)
上一篇介绍了java的内存结构,那么接下来总结java在多核多线程的环境下如何解决数据访问的复杂问题。 二、JMM与线程规范 我们知道,计算机按支持的指令大致可以分为两类: 精简指令集计算机(RISC),代表是如今大家熟知的ARM芯片,功耗低,运算能 力相对较弱。 复杂指令集计算机(CISC) ,代表作是Intel的X86芯片系列,比如奔腾,酷睿,至 强,以及AMD的CPU。 CPU与缓存的结构如图 CPU接收到指令后,它会最先向CPU中的一级缓存(L1 Cache)去...原创 2021-04-02 00:14:43 · 57 阅读 · 0 评论 -
java内存模型(一)
在提到java的内存模型是,一般都会说堆栈、程序计数器、方法区等这些设计。这里我更觉得秦大哥的说明更加容易理解。那么接下来我会根据秦大哥的解释进行总结说明。 一、内存结构: 内存结构通常说的就是栈、堆这些结构。从逻辑结构上分为线程栈、堆内存、非堆内存。 线程栈:为什么叫线程栈呢?因为首先这部分的数据结构是栈。每个线程都会有自己栈。JVM为每个新创建的线程都分配一个堆栈。线程栈包含了当前正在执行的方法链/调用链上的所有方法的状态信息。线程栈中保存了方法内的局部变量。线程栈有如下特点: 每个线程都.原创 2021-03-31 23:16:39 · 110 阅读 · 0 评论 -
JVM 类加载器
一、字节码与运行时程序的关系: 写好的代码经过编译变成了字节码,并且可以打包成Jar文件。然后就可以让JVM去加载需要的字节码,变成持久代/元数据区上的Class对象,接着才会执行我们的程序逻辑。 二、类的生命周期和加载过程 一个类的生命周期包括以下几个方面: 加载 验证 准备 解析 初始化 使用 卸载 在这些过程中,1-5步骤被称作类加载。 三、类加载时机 提到类加载时机,有个细节需要记录的是:类会在哪些情况下被初始化?这里记录下一些情况。 初始化何时会被触发: ...原创 2021-03-11 22:33:59 · 106 阅读 · 0 评论 -
Java字节码(二)
一、字节码的执行模型 VM是一台基于栈的计算机器。每个线程都有一个独属于自己的线程栈(JVMstack), 用于存储 栈帧 (Frame)。每一次方法调用,JVM都会自动创建一个栈帧。 栈帧 由操作数栈 ,局部变量数组 以及一个 class引用 组成。 class引用 指向当前方法在运行时常量池中对应的class)。 二、方法调用的常见指令 invokestatic,顾名思义,这个指令用于调用某个类的静态方法,这是方法调用指令中最 快的一个。 invokespecial, 用来调用...原创 2021-03-05 23:39:56 · 91 阅读 · 0 评论 -
Java字节码(一)
一、什么是字节码: Java所有的指令有200个左右,一个字节(8位)可以存储256种不同的指令信息,一个这样的字节称为字节码(Bytecode)。字节码是由类型前缀和操作名称这两部分组成。 二、java字节码文件编码过程 在了解了字节码的含义之后,那么你是否想过一个问题,我们平时编写的是java文件,JVM运行的class文件,也就是字节码。一般这个转化IDE工具帮我们完成了,或者在命令行的情况下使用Javac命令进行编译。那么在整个编译过程经过了哪些步骤呢?如下图所示: 看到这里..原创 2021-03-04 23:37:05 · 176 阅读 · 1 评论 -
JVM 基础知识
一、java的定义: Java也是一种编程语言,那么java的定义是:Java 是一种面向对象、静态类型、编译执行, 有 VM/GC 和运行时、跨平台的高级语言。这里把java的特点说明的很清楚了。 二、JDK、JRE、JVM的含义与关系: JDK(JavaDevelopmentKit)是用于开发Java应用程序的软件开发工具集合,包括 了Java运行时的环境(JRE)、解释器(Java)、编译器(javac)、Java归档(jar)、文档生成器(Javadoc)等工具。简单的...原创 2021-03-02 23:39:52 · 128 阅读 · 0 评论 -
编程语言介绍
一、语言的发展历程: 编程语言经历到现在大体上有3个发展历程: 从最早的机器语言(01) → 汇编语言 → 高级语言。越是底层的语言执行速度越快,但是越难以理解,耗时越多,门槛越高。现在基本上不会有人去直接写机器语言。越是高级的语言,越是容易让人理解,开发效率高,门槛低一些。随着现在计算机处理速度越来越快,人们的生活节奏越来越快。人们对效率重视程度很高。自然使用高级语言来开发软件是必然的结果,是历史发展的趋势。所以在现在语言百花齐放的时代,也可以大胆的预测。现在变成语言都是高级语言。 二、现.原创 2021-03-01 22:29:37 · 345 阅读 · 0 评论