美文网首页
jvm补充知识

jvm补充知识

作者: bangbang2 | 来源:发表于2020-07-23 10:31 被阅读0次

jvm是什么

Jdk是软件开发包,包括编译器。Jre是Java代码运行环境,包括Java运行的核心类库和****jvm。Jvm是运行时抽象出的虚拟平台,跨平台工作。类似一个抽象的操作系统,调用各种资源来完成Java代码的运行

Jvm是抽象的操作系统,包括垃圾回收(相当于内存管理),解释器(相当于cpu),字符验证器(类似io),字节码指令集(相当于Linux),不包括Java api 。Jre包括Java api和jvm

Jvm的classloader:

image.png

Bootstrap负责loading Java.lang(lang包是Java的核心,包括object,string,class和基本的数据类型)

Extension 负责loading extension class,加载一些Java.util的api

System class负责loading调用其他包的类或同一包中的类

委配模型:要load一个class时,先在method area看是不是已经被load,如果没有被load,将这个class一直传递下去,先给application loader,然后applicationloader将加载请求传递到extension loader,extensionloader再将request传给bootstrap loader,然后bootstrap 先在bootstrap类所在的路径找,如果没有被load,就将class load,否则将在extension loader类路径查找,然后application loader类路径找,如果找不到,throw ClassNotFoundException,相当于一个按顺序的一个轮回

image.png

类加载的过程:

1:加载,先找到对应的class文件,然后加载class文件,最后生成一个class对象

2:链接,

验证:验证class文件名(文件格式验证)、元数据验证(验证该class文件和Java的语义是不是一样)、字节码验证(验证字节码文件的格式是不是正确)

准备:为类变量分配内存(类变量在方法区)

解析:将常量池的内容更换为直接引用

3:初始化,初始化类变量,赋初始值,同时执行static修饰的代码块

image.png

jvm常见的参数

image.png image.png

在gc时,full gc是给老年代回收,minor gc是给年轻代回收垃圾。但给老年代的成本太高了,所以往往尽量让年轻代更大一点

Java 1.8后,没有了永久代,只有元空间,下面指令是指定元空间大小

image.png

gc调优

gc调优的目的:尽量在对象进入老年代前回收、执行gc的时间也比较短

策略1:把年轻代的大小调大一点

策略2:对于比较大的对象,直接放在老年代,给年轻代腾点空间呀

策略3:合理设置进入老年代的年龄,可以让年轻代的对象尽可能晚进入老年代

minor gc差不多10s一次,full gc得10分钟一次

image.png

jdk的一些命令

image.png

jps是看所有的进程状态,jstack是看虚拟机的线程快照

字节码文件

其他语言像Scala等都可以通过编译器转换为class文件,然后去执行

因为class文件的执行面向虚拟机,而不是编译器,所以有很强的跨平台性

image.png

相关文章

  • jvm补充知识

    jvm是什么 Jdk是软件开发包,包括编译器。Jre是Java代码运行环境,包括Java运行的核心类库和****j...

  • JVM基础知识系列

    JVM基础系列 JVM知识点扫盲系列(1) JVM知识点扫盲系列(2) JVM内存的那些事 JVM类加载的那些事 ...

  • 奥利给!啃烂这套“核心知识”+“高级面试”,成功定级腾讯Java

    01 JVM 1.1 核心知识之JVM 1.2 高级面试之JVM 02 Java集合 2.1 核心知识之Java集...

  • Java对象头和对象组成参考

    补充1:JVM中new一个Java空对象最少需要3个字长,引用1个字长,对象头2个字长;补充2:JVM中new一个...

  • JVM 详解(JVM 内存模型、JMM 内存可见性、类加载机制、

    JVM 知识点汇总 首先看看 JVM 的知识点汇总。 如上图所示,JVM 知识点有 6 个大方向,其中,内存模型、...

  • 技术文章罗列

    JVM JVM知识点详解JVM初步诊断JVM内存模型 Java Api java8 stream Api讲解(上)...

  • JVM调优补充

    本文将不具体讲述JVM的机制,重点关注JVM有哪些可以调优的参数,这些参数对JVM又有哪些影响 一、调优方向参考表...

  • 知识补充

    在不允许修改参数变量的值时可以加上const修饰符 图片 在ios中会自动识别图片@几x来按比例显示假如图片是xx...

  • 知识补充

    1. 傅立叶变换: (1) 傅立叶级数:法国数学家傅里叶发现,任何周期函数都可以用正弦函数和余弦函数构成的无穷级数...

  • 知识补充

    必备词 breakfast voucher[ˈvaʊtʃɚ] 早餐卷 lunch voucher dinner v...

网友评论

      本文标题:jvm补充知识

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