`

JVM的理解

    博客分类:
  • JAVA
 
阅读更多

一、 内存管理

1. 内存结构

    方法区:

                  类加载的信息

                  运行时常量池:来源class文件中的常量池,动态设置常量的API

                  所有线程共享

                  PermSpace,MaxPermSpace

    堆

                  存放对象实例

                  分代收集

                         Eden

                         from survior

                         to survior

                         old

                  所有线程共享

                  -Xmx,-Xms

    虚拟机栈

                  线程执行java方法的调用栈,方法调用的嵌套,对应栈帧的入栈,出栈。

                  一个方法是一个栈帧。

                  一个栈帧

                         局部变量表

                         操作数栈

                  一个线程私有。

                 -Xss

    本地方法栈

                 类似java方法,这里执行本地方法。

    程序计数器

                 一个线程执行到字节码指令列表的哪条指令。

    直接内存

    执行引擎

    本地方法库接口

    本地方法库

    

2. 垃圾回收

    如何确定对象是否为垃圾?引用计数算法,根搜索算法。

    确定了对象是否为垃圾,然后怎么处理?

           垃圾直接回收

           非垃圾

                  标记清除算法

                         标记哪些是垃圾对象,直接回收,回收空间直接使用

                  标记复制算法

                         准备一个和原空间一样大的内存,将标记的删除,将非垃圾的copy到另一个空间去。

                         发现每次复制的很少,更新成第二版本

                                一个Eden占90%

                                两个survior占10%

                                一开始用一个Eden,一个survior,回收时,将非垃圾对象,copy到另一个survior上。

                  标记整理算法

                         将标记的垃圾对象回收,将非垃圾对象整理位置,挪到前面去,剩余空间连续。

                  分代收集算法*

                          年轻代用标记复制算法

                          老年代用标记整理算法

3. 内存监控工具

    jps

    jstat

    jmap

    jstack

 

二、执行引擎

1. class文件结构

2. 加载过程和类加载器

3. 执行引擎确定方法版本,执行方法内字节码,执行时内存结构

 

三、编译优化

1. 编译期优化

2. 运行期优化

 

四、并发执行

1. 多线程

2. 并发

分享到:
评论

相关推荐

    jvm理解pdf

    以上只是JVM理解的一部分,实际应用中,开发者还需要掌握JVM的热点代码探测(如JIT编译),内存泄漏检测,线程分析,异常处理等多个方面。通过学习《深入理解Java虚拟机》这样的专业书籍,能更全面地了解和掌握JVM,...

    全面理解JVM虚拟机.pdf

    全面理解JVM虚拟机.pdf

    jvm原理及调优

    Java编译器的目标是生成能够被JVM理解的字节码文件。Java源代码文件编译后生成的字节码文件(.class文件),通过JVM将其逐条翻译成特定平台下的机器码,并在此基础上运行。 JVM的工作流程主要包括以下几个步骤: 1...

    深入理解jvm虚拟机

    标题提到的“深入理解JVM虚拟机”,意味着要对JVM的内部机制进行深入的研究和理解。其核心知识点涵盖了如下几个方面: 1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、...

    jvm指令手册

    1. **字节码**:Java源代码编译后生成的是字节码文件(.class),这些文件包含了可被JVM理解的二进制指令。每个字节码指令由一个单字节的操作码(opcode)和可能的参数组成。 2. **操作码**:JVM指令由操作码标识,...

    深入理解JVM&G1; GC

    《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...

    深入理解JVM.rar

    每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...

    深入理解JVM.

    深入理解JVM,首先要明白Java技术的组成部分,包括Java编程语言、Java类文件格式、Java虚拟机(JVM)和Java应用程序接口(Java API)。这些组件共同构成了Java平台,使得Java程序能够实现跨平台运行。 Java虚拟机是...

    JVM规范与深入理解

    《JVM规范与深入理解》这个主题涵盖了Java虚拟机(Java Virtual Machine)的全面解析,旨在帮助开发者深入了解JVM的工作原理及其对程序性能的影响。在这个主题中,我们主要关注两个核心资源:周志明的《深入理解Java...

    圣思园张龙 深入理解jvm

    根据提供的文件信息,“圣思园张龙 深入理解jvm”,我们可以推断出这份资料主要关注于Java虚拟机(JVM)的深入理解和实践应用。JVM是Java开发环境中非常核心的一个组成部分,它不仅为Java程序提供了运行时环境,还负责...

    [转载]深入理解JVM

    ### 深入理解JVM #### 一、Java技术与Java虚拟机 Java不仅仅是一种编程语言,更是一项综合性的技术。它主要包括四个关键组成部分: 1. **Java编程语言**:这是一种面向对象的编程语言,提供了丰富的类库支持,...

    深入理解jvm

    《深入理解Java虚拟机》是一本深度探讨Java虚拟机(JVM)的权威著作,旨在帮助读者全面了解和掌握JVM的工作原理与优化技术。这本书的内容涵盖了JVM的基础概念、内存管理、类加载机制、执行引擎、垃圾收集、性能调优...

    深入理解JVM&G1GC

    资源名称:深入理解JVM & G1 GC内容简介:G1 GC提出了不确定性Region,每个空闲Region不是为某个固定年代准备的,它是灵活的,需求驱动的,所以G1 GC代表了先进性。《深入理解JVM & G1 GC》主要为学习Java语言的...

    深入理解Java虚拟机JVM高级特性与最佳实践1

    然而,想要在高并发和高性能场景中充分发挥Java的优势,开发者需要对支撑Java程序运行的虚拟机——Java虚拟机(JVM)有深入的理解。《深入理解Java虚拟机JVM高级特性与最佳实践》一书,正是为解决这一需求而生。 ...

    java基础及中级面试题+jvm面试题+集合面试题

    Java是世界上最流行的编程...对于Java程序员来说,扎实的基础知识、深入的JVM理解以及对集合框架的熟练运用,都是成为优秀开发者的关键。在准备面试的过程中,不断实践和加深理解,将有助于在职场上取得更大的成功。

    java高级篇:JVM调优.mp4

    分析常见的JVM调优技术及其相关条件,以及在实战中怎么使用到相关的技术进行调优,比较适合中高级开发进行学习,适合对JVM理解较深的开发学习

    深入理解JVM & G1 GC

    《深入理解JVM & G1 GC》这篇文章和相关压缩包文件主要聚焦于Java虚拟机(JVM)的内存管理,特别是垃圾收集器(GC)的优化,特别是G1(Garbage-First)垃圾收集器的深度解析。下面将详细阐述JVM、GC的基本概念,...

    JVM如何理解Java泛型类.doc

    ### JVM如何理解Java泛型类 #### 一、引言 在Java中,泛型是一种强大的功能,它允许程序员编写灵活且类型安全的代码。然而,对于Java虚拟机(JVM)来说,它实际上并不理解泛型的概念。所有的泛型信息在编译阶段就被...

Global site tag (gtag.js) - Google Analytics