`

JVM基础

JVM 
阅读更多
一、Java 运行时区域

《Java 虚拟机规范(Java SE 7 版)》

1.类装载子系统通过类的全限定名加载 class 文件
2.进而与运行时数据区交互
方法区、Java堆区、Java栈区、程序计数器、本地方法栈
3.通过执行引擎调用本地库接口,进而操作本地方法库


  • Java 运行时数据区:方法区、堆、虚拟机栈、程序计数器、本地方法栈
  • 线程共享数据区:方法区、堆
  • 线程隔离数据区:虚拟机栈、本地方法栈、程序计数器


定义方法区虚拟机栈本地方法栈程序计数器
英文Method AreaVM stackNative Method StackProgram Counter RegisterHeap
共享/私有共享内存线程私有,生命周期和线程一致线程私有内存空间小,线程私有线程共享
存储存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据描述的是 Java 方法执行的内存模型:每个方法在执行时都会床创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行结束,就对应着一个栈帧从虚拟机栈中入栈到出栈的过程Java 虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的 Native 方法服务如果线程正在执行一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这个计数器的值则为 (Undefined)主要是存放对象实例和数组
OutOfMemoryError-StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度。OutOfMemoryError:如果虚拟机栈可以动态扩展,而扩展时无法申请到足够的内存。同本地方法栈OutOfMemoryError:如果堆中没有内存完成实例分配,并且堆也无法再扩展时,抛出该异常
其他运行时常量池:属于方法区一部分,用于存放编译期生成的各种字面量和符号引用。编译器和运行期(String 的 intern() )都可以将常量放入池中。内存有限,无法申请时抛出 OutOfMemoryError局部变量表:存放了编译期可知的各种基本类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference 类型)和 returnAddress 类型(指向了一条字节码指令的地址)-字节码解释器工作是就是通过改变这个计数器的值来选取下一条需要执行指令的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖计数器完成-


二、


1.
方法区、堆区、栈区、本地方法栈、程序计数器

2.
持久代+堆
持久代=方法区+其他
堆=新生代+老生代
新生代=伊甸园区+s1+s0

3.堆溢出
循环中new对象,由于强引用,GC未能对资源进行回收,直到资源耗尽

初始化过大的资源,系统默认的堆大小不够

4.栈溢出

每次操作都会进行压入栈中,达到栈的最大大小,不能再继续压栈

博文参考:

JVM中的直接引用和符号引用

JVM内存模型及 堆溢出、栈溢出问题

PC Register :程序计数器

Hotspot

常见内存溢出问题

JVM
分享到:
评论

相关推荐

    JVM基础.doc

    ### JVM基础知识精讲 #### 一、JVM概述与HotSpot简介 Java虚拟机(JVM)是Java技术的核心组成部分之一,它为Java程序提供了运行时环境。本节将详细介绍JVM的基本概念及其核心技术——HotSpot。 **HotSpot VM** 是...

    JVM基础-超清文字版.pdf

    本资料《JVM基础-超清文字版.pdf》将深入探讨JVM的基础知识,包括其架构、内存模型、类加载机制以及性能优化等方面。 1. **JVM架构** - 类装载器:负责加载类文件到JVM中,分为引导类加载器、扩展类加载器和应用类...

    JVM基础JVM基础JVM基础

    ### JVM基础知识详解 #### HotSpot简介 HotSpot作为Oracle(原属SUN)的主要Java虚拟机实现,自2006年起开源,并成为OpenJDK项目的核心组成部分。它主要使用C++编写,支持多种操作系统和硬件架构。HotSpot的一个...

    java虚拟机 JVM 基础 高级特性

    JVM基础部分通常会涵盖以下几个关键知识点: 1. **JVM结构**:JVM由类加载器、运行时数据区、执行引擎、本地方法接口和本地库组成。理解这些组成部分的功能对于理解JVM如何工作至关重要。 2. **类加载机制**:包括...

    JVM基础知识及性能调优

    ### JVM基础知识及性能调优 #### 一、JVM架构概览 Java虚拟机(JVM)作为Java程序运行的基础环境,其内部结构复杂且高效。理解JVM的基础知识对于优化Java应用程序至关重要。JVM主要由以下几个关键部分组成: 1. **...

    JVM基础知识部分,帮助初识JVM

    了解并掌握这些JVM基础知识对于编写高性能、低内存消耗的Java程序至关重要。开发者可以通过理解JVM的工作原理,优化代码,避免内存溢出,提升应用的运行效率。此外,对JVM的深入研究也能帮助我们更好地理解Java平台...

    JVM基础内存模型,调优了解

    JVM基础内存模型调优了解 JVM基础内存模型是Java虚拟机(JVM)中的一种内存组织方式,主要包括程序计数器、Java虚拟机栈、本地方法栈、堆区和方法区五个部分。这五个部分都是JVM中非常重要的组成部分,分别承担着...

    JVM基础系列

    ### JVM基础系列——深入了解Java虚拟机的重要性 #### 一、引言 随着Java技术的不断发展,Java虚拟机(JVM)已成为软件开发人员不可或缺的核心技能之一。对于初学者而言,掌握JVM的基础知识不仅可以帮助深入理解Java...

    jvm基础知识与调优-jvm-training.zip

    JVM基础知识与调优是每一个Java开发者都需要掌握的重要技能。这个“jvm-training”资料包涵盖了JVM的核心概念、内存管理、垃圾回收机制、性能优化等方面的知识。 1. **JVM架构** - 类加载器:JVM通过类加载器将....

    JVM 基础 JAVA 并发 JVM 性能调优 LeetCode 算法 .......

    "JVM 基础知识点" JVM(Java Virtual Machine)是 Java 语言的运行环境,负责执行 Java 字节码。 JVM 的主要组件包括类加载器、字节码验证器、执行引擎和垃圾回收器等。 1. JVM 参数分类 JVM 参数可以分为三类:...

    JVM基础及微服务基础知识大数据技术全栈及面试指南.pdf

    ### JVM基础 #### 1. JVM概述 - **定义**:Java虚拟机(JVM)是一种用于执行Java字节码的虚拟机。它为运行Java应用程序提供了一个平台无关的环境。 - **作用**:JVM的主要职责是将编译后的Java代码转换成平台特定的...

    jvm基础学习,介绍各种jvm里面的知识点,和深入理解java虚拟机很像,易懂

    ### JVM基础知识详解 #### JVM加载类的过程与机制 JVM(Java虚拟机)在加载类的过程中,遵循了一系列明确且有序的步骤。对于开发者而言,理解这些步骤有助于更好地掌握类加载的内部工作原理。 ##### 类加载的过程...

    jvm基础指南

    java virtual machine JVM基础概念和垃圾回收原理,jvm调优的基本指南

    JVM基础理解,以做成xmind欢迎分享

    JVM基础理解,以做成xmind欢迎分享

    JVM基础知识

    Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在...

    JVM基础原理

    ### JVM基础原理详解 #### 什么是JVM? Java虚拟机(JVM)是一种运行环境,它为Java程序提供了一个统一的平台,使Java程序能够跨平台运行。JVM的主要功能包括执行字节码、管理内存、处理异常以及提供平台独立性。 ...

    jvm的基础知识总结

    JVM的基础知识涵盖了其内存模型、垃圾回收机制、线程模型等多个方面,下面将详细总结这些基础知识。 ### JVM内存模型 JVM内存模型主要可以分为线程共享区域和线程私有区域。 **线程共享区域** 1. 堆(Heap):...

Global site tag (gtag.js) - Google Analytics