`
huhu_long
  • 浏览: 72346 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

JVM的一些概念

    博客分类:
  • JVM
阅读更多
1. 所谓Java运行时(或者叫Java平台)就是有“Java虚拟机”和“Java API”一起组成一个平台。

2. Java虚拟机的主要任务就是装载class文件并且执行其中的字节码。Java虚拟机包含一个类加载器(class loader), 它可以从程序和API中装载class文件。 Java API中只有程序需要的类才会被装载。字节码由执行引擎来执行。

3. 类装载器在Java虚拟机中其实是一个可能包含多个我们通常所说的类装载器的一个子系统。

4. 一个应用程序可以使用两种类装载器:
    a) ”启动”(bootstrap)类装载器
    b) 用户自定义类装载器
其中启动类装载器是Java虚拟机实现的一部分。 启动类装载器又被称作: 原始、系统、或默认类装载器。
而用户自定义的类装载器是指能够在Java应用程序在运行时安装, 并能够使用用户自定的方式来装载类的类装载器。比如系统类装载器通常从本地磁盘中装载类, 而用户自定义的类装载器则可能从网络上下载class文件。

5. 当一个类被装载的时候, Java虚拟机会监视这个类, 看这个类是被启动(系统)类装载器还是用户自定义类装载器装载的。 当被装载的类引用了另外一个类时, 虚拟机就会使用装载引用类得类装载器去装载被引用类。

6. Java的可伸缩性, Java平台可以在各种各样不同类型的计算机上实现。 如早期出现的Java个人版平台, Java嵌入式平台, Java卡平台等都是针对不同的特定的目标领域而定制/裁剪的。 然后便出现了所谓的J2ME, J2SE 和 J2EE。。。

---------------------------- 我是分割线  ------------------------------
7. Java虚拟机就是负责运行Java程序。 当一个Java程序启动的时候, 就会产生一个虚拟机实例。 每一个Java程序都会有一个单独的虚拟机实例。

8. Java程序初始类中的main()方法, 将作为该程序初始线程的起点, 任何其他的线程都是由这个初始线程启动的。

9. Java虚拟机内部有两种线程: 守护线程和非守护线程。 守护线程通常是有虚拟机自己使用的, 比如执行垃圾收集任务的线程。 而Java程序中的初始线程(开始于main()的那个), 就是非守护线程。 只要还有任何非守护线程在运行, 就意味着Java还正在运行, 此时虚拟机仍然处于存活状态。 但当该程序中所有的非守护线程都终止的时候, 虚拟机实例将自动退出。

---------------------------- 我是分割线  ------------------------------
10. Java Class文件的前四个字节被称作魔数 - magic number (0xCAFEBABE), 其作用是可以轻松的辨别出该文件是不是Java Class文件。 所有的Java Class文件都是以0xCAFEBABE开头。

---------------------------- 我是分割线  ------------------------------
11. 垃圾收集器负责两块内容, 一是释放不再被引用的对象/实例; 二是处理堆碎片。
    a) 在释放不再被引用对象的过程中, 圾收集器会执行将要被释放的对象的finalier方法
    b) 为什么要处理堆碎片? 因为当一些对象被释放后, 这些堆的空间可能是一个不连续的空间, 那么如果有一个对象需要较大的空间, 当前的空间不一定能找出一个连续的空间给它, 虽然总的空间依然足够大, 这样就会导致“内存不足”的问题。 而增长的堆需要额外分页或交换(这个地方不懂, 待考究。。。)空间, 这样会影响程序的性能。


分享到:
评论

相关推荐

    JVM基本概念知识总结

    JVM基本概念知识总结

    推荐一些JVM原理,JVM调优,JVM内存模型,JAVA并发 电子书1

    标题中提到了JVM原理、JVM调优、JVM内存模型和JAVA并发,这些都是Java虚拟机(JVM)相关的核心概念。JVM是运行Java字节码的虚拟计算机,为Java提供了一个跨平台的环境,确保Java程序可以在不同的操作系统上运行而...

    初识JVM – JVM概念.pdf

    ### 初识JVM – JVM概念 #### 一、JVM简介 JVM,即Java Virtual Machine(Java虚拟机),是一种能够执行特定机器指令的虚拟机。它通过软件模拟了一个完整的计算机系统,允许Java程序在任何支持JVM的平台上运行而...

    JVM的相关概念.doc

    JVM 相关概念 JVM(Java Virtual Machine)是一种虚拟机,负责运行 Java 程序。下面是 JVM 相关概念的知识点总结: JVM 生命周期 1. JVM 实例的诞生:当启动一个 Java 程序时,一个 JVM 实例就产生了。任何一个...

    JVM调优总结

    1.2 JVM调优总结(一)-- 一些概念 4 1.3 JVM调优总结(二)-一些概念 7 1.4 JVM调优总结(三)-基本垃圾回收算法 9 1.5 JVM调优总结(四)-垃圾回收面临的问题 12 1.6 JVM调优总结(五)-分代垃圾回收详述1 14 1.7 ...

    jvm 启动过程 JVM 原理

    首先,我们需要理解JVM的基本概念。JVM是Java Virtual Machine的缩写,它是Java平台的核心组件之一。它的主要任务是将编译后的Java类文件(.class文件)中的字节码转换为特定平台的机器码,实现了Java的“一次编写,...

    jvm视频及笔记

    通过观看"jvm视频",你可以直观地了解这些概念,并通过"jvm笔记"加深理解和记忆。理论学习后,实践操作是巩固知识的关键,尝试在实际项目中应用这些知识,解决性能问题,优化JVM配置,将使你对JVM的理解更加深入。

    jvm基础指南

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

    JVM必知必会

    内存模型中的重要概念 - **方法区**:存储已被虚拟机加载的类信息、常量、静态变量等数据。 - **堆**:存放对象实例,是垃圾收集器管理的主要区域。 - **虚拟机栈**:描述Java方法的执行过程。 - **本地方法栈**:...

    JVM基础.doc

    本节将详细介绍JVM的基本概念及其核心技术——HotSpot。 **HotSpot VM** 是Oracle公司提供的一个高性能Java虚拟机实现,它具有以下特点: - **主要实现语言**:C++ - **执行模式**:采用了解释器和编译器混合的工作...

    R大(国内JVM权威)资料合集

    - **概念**: JVM(Java Virtual Machine),即Java虚拟机,是一种能够执行字节码(Bytecode)的虚拟机实例。它是运行Java程序的核心组件,负责将Java字节码转换为特定平台上的机器码执行。 - **重要性**: JVM不仅...

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    1.1 概念 1.2 JVM内存模型 1.3 Heap堆内存模型 第三节:定位垃圾对象的依据 1.1 引用计数法 1.2 可达性算法 第四节:垃圾回收算法 1.1标记清除算法 1.2复制算法 1.3 标记整理(标记压缩)算法 第五节:垃圾...

    jvm模型图谱简介基本概念

    jvm模型图谱简介基本概念 Jvm 模型图谱是 Java 虚拟机(Java Virtual Machine,JVM)在运行程序时自动管理的内存区域的划分,主要包括方法区、Jvm 堆、程序计数器、虚拟机栈、本地方法栈等几个区域。每个区域都有其...

    Java JVM Instruction Set

    在设计JVM时,考虑到Java语言的特点,如面向对象、自动垃圾回收等特性,JVM的设计需要能够支持这些特性。 ##### 如何检查JVM代码 可以使用`javap`工具来反汇编已编译的Java类文件,查看字节码指令。例如,如果想要...

    很入理解JVM体系

    2.1、JVM相关概念 1、什么是JVM 2、JVM能运行哪些编程语言 3、JVM运行流程 4、JVM生命周期 5、三大流行的JVM 2.2、JVM体系结构 1、类加载器 2、执行引擎 3、运行时数据区 4、本地库接口 2.3、JVM内存参数调整及监控 ...

    jvmjava,java实现的JVM。.zip

    这有助于深入理解JVM的生命周期管理、异常处理、多线程等复杂概念。 五、优化与进阶 掌握JVM的工作原理后,开发者可以进行更高级的调优,如调整JVM参数以优化内存分配、提高垃圾收集效率等。此外,还可以探索JVM的...

    JVM内存管理白皮书

    JVM提供的内存管理机制是自动的,这与其他一些编程语言需要开发者显式地进行内存管理形成鲜明对比。自动内存管理的优势在于它减轻了开发者的负担,避免了因内存管理不当而产生的诸如内存泄漏等问题。 2. 垃圾收集的...

Global site tag (gtag.js) - Google Analytics