JVM
[shenhonglei]
KubeSphere Member、CKA、Google认证专家(GCP)云架构师、V-M-ware 云原生技术专家、云原生社区上海站核心成员、云原生开源项目爱好者、QingCloud 容器解决方案架构师,主要负责容器类云原生相关产品及服务, 具有丰富的公有云和云管平台建设经验。致力于云原生中间件和 PaaS 产品研发和落地实践,热衷于开源技术。
展开
-
快速了解SpringCloud微服务集成Micrometer+Prometheus+Grafana
快速了解SpringCloudAlibaba集成Micrometer1. 背景2.Micrometer说明2.1 什么是Micrometer ?2.1 Micrometer提供的功能&支持的监控2.1.1、主要功能。2.1.2、支持的监控系统3.如何和SpringBoot2.X集成3.1.SpringBoot添加依赖&增加监控埋点3.2.使用Docker下载和运行Prometh...原创 2020-04-29 23:54:43 · 2166 阅读 · 1 评论 -
JVM是如何处理异常的
JVM是如何处理异常的1.概念1.1.显式抛异常1.2.隐式抛异常1.3. 捕获异常则涉及了如下三种代码块。1.4.Throwable有哪些子类?1.5.Exception的子类2.Java 虚拟机是如何捕获异常的?2.1异常表1.概念异常处理抛出异常显式抛异常隐式抛异常捕获异常try 代码块catch 代码块finally1.1.显式抛异常是的主体是应用程序,它指的是在程序中使用“t...原创 2019-08-11 15:01:23 · 382 阅读 · 0 评论 -
JVM是如何执行方法调用的
JVM是如何执行方法调用的1. 重载2. 重写3.Jvm的静态绑定与动态绑定4.调用指令的符号引用4.1.对于非接口符号引用。虚拟机需要按照以下三步操作。4.2.对于接口符号引用虚拟机按照以下模式操作。1. 重载在同一个类中定义名字相同的方法,参数类型必须不同。方法之间的关系称为重载。 重载的方法在编译过程中完成识别。选取主要有三个阶段。- 不考虑基本类型自动拆装箱,以及可变长参数可以选...原创 2019-08-11 14:19:38 · 372 阅读 · 0 评论 -
Java虚拟机是如何加载Java类的?
Java虚拟机是如何加载Java类的1.加载、链接以及初始化三大步骤2.加载.class文件的方式3.类加载器3.1 java虚拟机自带的加载器:3.2用户自定义加载器3.3类加载的最后一步是初始化,它的初始化何时会被触发呢1.加载、链接以及初始化三大步骤Java 虚拟机中的类加载,从 class 文件到内存中的类,按先后顺序需要经过加载、链接以及初始化三大步骤。其中,链接过程中同样需要验证;...原创 2019-08-11 14:01:56 · 437 阅读 · 0 评论 -
Java的基本类型
Java的基本类型八个基本类型Java虚拟机的boolean类型Java 它引进了八个基本类型,来支持数值计算。Java 这么做的原因主要是工程上的考虑,因为使用基本类型能够在执行效率以及内存使用两方面提升软件性能.八个基本类型Java的基本类型都有对应的值域和默认值。可以看到,byte、short、int、long、float以及double的值域依次扩大,而且前面的值域被后面的值域所包...原创 2019-08-11 13:26:42 · 312 阅读 · 0 评论 -
Java代码是怎么运行的?
Java代码是怎么运行的0.Java 为什么能跨平台,实现一次编写,多处运行?2.Java 虚拟机如何运行 Java 字节码的?2.1 标准 JDK 中的 HotSpot 虚拟机为例,从虚拟机角度来看2.2 标准 JDK 中的 HotSpot 虚拟机为例,从底层硬件角度来看3.Java 虚拟机的运行效率究竟是怎么样的?0.Java 为什么能跨平台,实现一次编写,多处运行?【为什么 Java 要...原创 2019-08-11 12:59:39 · 341 阅读 · 0 评论 -
为什么要学习Java虚拟机
学习Java虚拟机的好处1.根据虚拟机的参数,可以针对自己的应用,最优化匹配运行参数。1.1 查看Java JVM参数配置信息命令[你使用的JDK支持的参数]1.2 学习这些配置及命令有何意义?2. 理解其背后的设计决策3. 共享生态系统1.根据虚拟机的参数,可以针对自己的应用,最优化匹配运行参数。1.1 查看Java JVM参数配置信息命令[你使用的JDK支持的参数]-XX:+PrintF...原创 2019-08-11 11:21:04 · 339 阅读 · 0 评论 -
了解JVM原理、结构;代码说明抽象概念
程序计数器(Program Counter Register)类似于PC寄存器,是一块较小的内存区域,通过程序计数器中的值寻找要执行的指令的字节码,由于多线程间切换时要恢复每一个线程的当前执行位置,所以每个线程都有自己的程序计算器。这一个区域不会有OutOfMemeryError。当执行Java方法时,这里存储的执行的指令的地址,如果执行的是本地方法,这里的值是Undefined。也可以这原创 2017-02-09 15:12:13 · 617 阅读 · 0 评论 -
JVM中堆空间划分、参数设置
上图中,刻画了Java程序运行时的堆空间,可以简述成如下2条1.JVM中堆空间可以分成三个大区,新生代、老年代、永久代2.新生代可以划分为三个区,Eden区,两个幸存区在JVM运行时,可以通过配置以下参数改变整个JVM堆的配置比例1.JVM运行时堆的大小 -Xms堆的最小值 -Xmx堆空间的最大值2.新生代堆空间大小调整 -XX:NewSize新生代的最小值原创 2017-02-09 18:06:54 · 2412 阅读 · 0 评论 -
JVM的基本结构及JVM的内存溢出方式
JVM内部结构图Java虚拟机主要分为五个区域:方法区、堆、Java栈、PC寄存器、本地方法栈。下面来看一些关于JVM结构的重要问题。1.哪些区域是共享的?哪些是私有的?Java栈、本地方法栈、程序计数器是随用户线程的启动和结束而建立和销毁的,每个线程都有独立的这些区域。而方法区、堆是被整个JVM进程中的所有线程共享的。 2.方法区保存什么?会被回收吗?转载 2017-02-09 17:54:38 · 608 阅读 · 0 评论 -
JVM内存结构图解 (四)
四 数据类型占用空间分析 操作数栈:long和double需要占用2个栈深单位(unit of depth),其它类型占用1个栈深单位。 局部变量表:long和double需要占用2个局部变量空间(slot),其它类型占用1个局部变量空间。 运行时常量池:byte、short和int被存储为CONSTANT_Integer_info 结构;float被存储为CONST转载 2017-02-09 17:06:30 · 1185 阅读 · 0 评论 -
JVM内存结构图解 (三)
㈢ 构造方法图解1.操作数栈初始为空,执行0:aload_0指令,局部变量表的当前方法所属对象的引用(this) 复制到操作数栈的栈顶。实例对象保存在java堆,方法引用指向非堆方法区。2.执行1:invokespecial #1指令,调用父类的初始化方法。父类初始化方法会在当前栈帧上添加一层新的栈帧。父类初始化方法执行完毕后,其对应栈帧销毁。3.执行4:return指令返转载 2017-02-09 17:00:00 · 1018 阅读 · 0 评论 -
理解JVM,用代码说明下抽象的概念,易理解和学习 (二)
源码:package com.shl.test;/** * Created by IntelliJ IDEA. * Created by Freddy on 2017/2/9. */public class HelloWorld { //声明全局变量a并赋值 public static final int a = 10; public static v原创 2017-02-09 16:13:20 · 467 阅读 · 0 评论 -
JVM内存结构图解 (-)
一 真实系统中的概念 JVM(Java Virtual Machine),顾名思义是对真实计算机系统的模拟,正因如此才能屏蔽物理机器的变化,从而实现“一次编译,到处运行”。 相信很多Java程序员经常听到堆、栈等概念,也会进行设置调优以让Java应用能够更好地运行,但对于JVM与真实计算机系统之间的关系并没有特别清晰的认识。因此,这里先简单介绍下真实计算机系统中的一些概念。转载 2017-02-09 16:34:48 · 521 阅读 · 0 评论