阿亮的日志

  • 首页
  • 图说技术
  • 归档
  • 关于

  • 搜索
b 有序性 原子性 可见性 volatile 并发编程 hystrix 源码 eureka springcloud JVM

01_JVM初识

发表于 2020-10-08 | 分类于 图说JVM | 0 | 阅读次数 97

前言

该系列内容用来记录自己在JVM学习中的一些知识,梳理学习内容同时记录分享,进行交流。

课程目标

通过本课程可以了解如下内容,希望大家能够掌握和了解如下内容。

  • jvm处理的简单流程
  • jvm内存模型初识

目录

  • 概述
  • JVM内存模型
  • 大图总结

1.概述

一些概念

1.1.java简单的处理流程

我们大家应该都是经历过代码上线的流程,通过maven进行打包mvn package打出一个java包,然后通过java -jar xx.jar命令就启动了一个java程序,但是大家有没有思考过在这个过程中,我们究竟做了什么,或者说程序到底做了什么?

这是我们一个系统运行的一个简单流程图,从我们代码的编写到整个的运行。那么class文件是如何到JVM中并且运行起来的呢?这里就需要引入一个新的概念了类加载器,相信对于JVM有过了解的同学应该是很熟悉这个东西了。

1.2.JVM中的处理流程

这里类加载器会将class文件加载到jvm中去,然后供后续代码执行,这里还有一个执行引擎的概念。

2.JVM内存模型

类加载器加载到JVM的过程中肯定不是简单的把class类加载进内存,然后就去执行代码了,那么它的内部的内存模型究竟是怎样的呢?

JVM的内存模型在不同的虚拟机实现上略有不同,如Hotspot和JRockit是不一样的,而在JDK1.8中两者进行了合并,这也是为什么JDK1.7和1.8的内存区域有比较大的区别的原因。

2.1.内存模型规范

堆

所有线程共享:该区域是需要我们重点关注的区域,所有的对象实例及数组都在此处进行分配。是垃圾回收器重点处理的区域

方法区

所有线程共享:该区域主要用于存储类的一些信息,常量、静态变量等信息。

虚拟机栈

线程私有:为虚拟机使用到的java方法提供服务。

本地方法栈

线程私有:为虚拟机使用到的本地native方法服务,如多线程CAS中的Unsafe类

程序计数器

线程私有:可以把它当做时程序的字节码执行的行号记录器。每个线程私有,它会记录该线程执行到代码中的哪一行

3.大图总结

关于

  • Github: https://github.com/liangliang1259/common-notes
  • 公众号
坚持有质量的创作,您的支持将支持我继续创作!
阿亮 微信支付

微信支付

阿亮 支付宝

支付宝

  • 本文作者: 阿亮
  • 本文链接: http://sunliangliang.com/?p=3
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# b # 有序性 # 原子性 # 可见性 # volatile # 并发编程 # hystrix # 源码 # eureka # springcloud # JVM
Hello Halo
01_图说Eureka源码(初探)
  • 文章目录
  • 站点概览
阿亮

阿亮

10 日志
8 分类
11 标签
RSS
Github E-mail
Creative Commons
0%
© 2021 阿亮
由 Halo 强力驱动
|
主题 - NexT.Pisces v5.1.4