JVM基础知识和性能调优专题培训课件
- 格式:ppt
- 大小:2.85 MB
- 文档页数:2
jvm知识点JVM(Java Virtual Machine)是 Java 程序的运行环境,是 Java 语言的核心。
JVM 在 Java 技术中的位置非常重要,因此,本文将详细说明 JVM 的知识点。
1. JVM 基本概念JVM 是 Java 的虚拟机,是 Java 语言的核心,它是 Java 平台的一部分,主要功能如下:1)将编写的 Java 代码编译为字节码文件2)自动内存管理3)Java 程序的运行2. JVM 的内存结构JVM 中的内存分为以下几个部分:1)程序计数器2)Java 虚拟机栈3)本地方法栈4)堆5)方法区3. JVM 内存溢出JVM 内存溢出是指 JVM 中的内存区域中存储的数据超过了其容量限制,导致 JVM 无法再继续运行程序的情况。
出现 JVM 内存溢出的原因有很多,比如内存泄漏、持久的内存占用等。
4. JVM 的垃圾回收JVM 垃圾回收是指 JVM 对内存中已经不再使用的数据进行清理的操作。
JVM 垃圾回收采用的是自动回收策略,也就是当 JVM 内存中出现垃圾数据时,JVM 会自动触发垃圾回收机制。
5. JVM 的性能优化JVM 的性能优化主要是针对内存的管理、垃圾回收的策略等方面进行优化,这样可以提高 JVM 的运行效率和程序的性能。
以上是关于 JVM 的知识点的介绍。
理解这些知识点对于 Java 开发人员来说非常重要,可以帮助其更好地设计开发 Java 程序,也有助于提高程序的性能。
同时,还可以帮助开发人员更好地理解 JVM 的工作原理和机制,从而更好地利用 JVM。
JVM原理与深度调优什么是jvmjvm是java虚拟机运⾏在⽤户态、通过应⽤程序实现java代码跨平台、与平台⽆关、实际上是"⼀次编译,到处执⾏"1.从微观来说编译出来的是字节码!去到哪个平台都能⽤,只要有那个平台的JDK就可以运⾏!字码好⽐是⼀个⼈,平台好⽐为国家,JDK 好⽐这个国家的语⾔!只要这个⼈(字节码)有了这个国家的语⾔(JDK)就可以在这个国家(平台)⽣活下去。
2.JDK 是整个Java的核⼼,包括了Java运⾏环境(Java Runtime Envirnment),⼀堆Java⼯具和Java基础的类库(rt.jar)。
3.Java虚拟机(JVM)⼀种⽤于计算机设备的规范,可⽤不同的⽅式(软件或硬件)加以实现。
编译虚拟机的指令集与编译微处理器的指令集⾮常类似。
Java虚拟机包括⼀套字节码指令集、⼀组寄存器、⼀个栈、⼀个垃圾回收堆和⼀个存储⽅法域。
4.java编译出来的是⼀种“java字节码”,由虚拟机去解释执⾏。
⽽c和c++则编译成了⼆进制,直接交由操作系统执⾏。
5.所谓的⼀次编译、到处执⾏,即只需在⼀个地⽅编译,在其他各个平台下都可以执⾏。
6.与平台⽆关指的是JAVA只运⾏在⾃⼰的JVM上,不需要依赖任何其他的底层类,所以和操作系统没有任何联系,平台是说运⾏的系统内存结构图class⽂件class⽂件径打破了或者C++等语⾔所遵循的传统,使⽤这些传统语⾔写的程序通常⾸先被编译,然后被连接成单独的、专门⽀持特定硬件平台和操作系统的。
通常情况下,⼀个平台上的⼆进制不能在其他平台上⼯作。
⽽Java class⽂件是可以运⾏在任何⽀持Java的硬件平台和操作系统上的⼆进制⽂件。
执⾏过程执⾏过程简介当编译和连接⼀个C++程序时,所获得的可执⾏只能在指定的硬件平台和操作系统上运⾏,因为这个⼆进制⽂件包含了对⽬标处理器的。
⽽Java把Java源⽂件的指令翻译成,这种字节码就是Java的“机器语⾔”。
深入浅出JVM调优基本概念:JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。
由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。
其他的都无需GC。
下图文JVM的内存模型从图中我们可以看到,1、JVM实质上分为三大块,年轻代(YoungGen),年老代(Old Memory),及持久代(Perm,在Java8中被取消,我们不做深入介绍)。
2、垃圾回收GC,分为2种,一是Minor GC,可以可以称为YGC,即年轻代GC,当Eden区,还有一种称为Major GC,又称为FullGC。
3、GC原理:我们可以看到年轻代包括Eden区(对象刚被new出来的时候,放到该区),S0和S1,是幸存者1区和幸存者2区,从名字可以看出,是当发生YGC,没有被任何其他对象所引用的对象将会从内存中被清除,还被其他对象引用的则放到幸存者区。
当发生多次YGC,在S0、S1区多次没有被清楚的对象,则会被移到老年代区域。
当老年代区域被占满的时候,则会发送FullGC。
无论是YGC或是FullGC,都会导致stop-the-world,即整个程序停止一些事务的处理,只有GC进程允许以进行垃圾回收,因此如果垃圾回收时间较长,部分web或socket程序,当终端连接的时候会报connetTimeOut或readTimeOut异常,4、从JVM调优的角度来看,我们应该尽量避免发生YGC或FullGC,或者使得YGC和FullGC的时间足够的短。
JMV调优的准备工作。
1)、配置jstatd的远程RMI服务(当我们要看远程服务器上JAVA程序的GC情况的时候,需要执行此步骤),允许JVM工具查看JVM使用情况。
将如下的代码存为文件jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下:不知道JAVA_HOME目录的,可以执行which java查看。