本文源码:GitHub·点这里 || GitEE·点这里 一.虚拟机简介 1.虚拟机概念 虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的.运行在一个完全隔离环境中的完整计算机系统.在实体计算机中能够完成的工作在虚拟机中都能够实现.在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量.每个虚拟机都有独立的CMOS.硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作. 2.JVM虚拟机 JVM是Java-Virtual-Machine的…
本文源码:GitHub·点这里 || GitEE·点这里 一.类加载简介 类的加载机制是指把编译后的.class类文件的二进制数据读取到内存中,并为之创建一个java.lang.Class对象,用来封装类在元数据空间的数据结构. 类在JVM中的生命周期为:加载,连接,初始化,使用,卸载.不过这里只重点描述加载,连接,初始化这三个过程. 二.加载过程 基于一张图看类加载子系统的细节流程: 1.加载阶段 过程描述 加载阶段需要完成以下三个过程: 通过类的全限定名来获取其定义的二进制字节流: 将字节流…
本文源码:GitHub·点这里 || GitEE·点这里 一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱影响计算机整体发挥的水平.JVM的内存结构规定Java程序在执行时内存的申请.划分.使用.回收的管理策略,通说来说JVM的内存管理指运行时数据区这一大块的管理. 2.线程运行 JVM中一个应用是可以有多个线程并行执行,线程被一对一映射为服务所在操作系统线程,调度在可用的CPU上执行,启动时会创建一个…
我们知道java之所以能够快速崛起一个重要的原因就是其跨平台性,而跨平台就是通过java虚拟机来完成的,java虚拟机属于java底层的知识范畴,即使你不了解也不会影响绝大部分人从事的java应用层的开发,但是如果你了解JVM的底层知识,你就能更加了解java这门语言的本质,从而对你应用层的java程序的性能优化起到很大的帮助(主要是指内存方面的)另外像一些要求比较高的公司可能在面试的时候会问一些JVM相关的知识,如博主在阿里巴巴内推一面的时候就被问到过JVM的内存区域模型(要知道博主目前可是大…
JAVA虚拟机系列(一) 类的加载 目录 1 类的初始化过程 2 详解初始化时的各个阶段 一.类初始化的过程 先来看一个CLASS文件在整体生命周期里会遇到的阶段: xxxx.class --->加载---->连接--->初始化---> 使用--->卸载. 我们将会在本章讨论一下xxxx.class--->加载--->连接---->初始化的过程. 讨论的方式采用自问自答模式: 1 首先类什么时候会被加载? 答:这一点JVM并没有强制约束,由不同的JVM供应商…
前言 之前写博客一直比较随性,主题也很随意,就是想到什么写什么,对什么感兴趣就写什么.虽然写起来无拘无束,自在随意,但也带来了一些问题,每次写完一篇后就要去纠结下一篇到底写什么,看来选择太多也不是好事儿,更重要的是不成体系的内容对读者也不够友好.所以以后的博客尽量按系列来写,不过偶尔也会穿插其他的内容.接下来一段时间我会把写博客的重点放在 JVM (Java Virtual Machine) 和 JUC (java util concurrent ) 上,对 Java 虚拟机和 Java 并发编…
我们知道面向对象语言的三大特点之一就是多态性,而java作为一种面向对象的语言,自然也满足多态性,我们也知道java中的多态包括重载与重写,我们也知道在C++中动态多态是通过虚函数来实现的,而虚函数是通过一个虚函数表来完成的,这也很好理解,那么java语言的多态性是怎么实现的呢?在java中是否也存在类似C++中的虚函数表的结构呢?这就需要我们从java虚拟机字节码执行引擎的执行过程来找答案了,下面就从java虚拟机字节码执行引擎的执行过程带领大家彻底理解java中的多态性. 通过前面的[jav…
java生命周期分为以下三部分:启动,运行,消亡. 启动.启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点. 运行.main()作为该程序初始线程的起点,任何其他线程均由该线程启动. 消亡.当程序中的所有非守护线程都终止时,JVM才退出:若安全管理器允许,程序也可以使用Runtime类或者System.exit()来退出. 运行中的JVM任务:执行Java程序.…
maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能. 这是maven系列第6篇. 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部有maven完整系列的连接. 前面我们使用maven过程中,用到了一些命令,如下: mvn clean mvn compile mvn test mvn package mvn install mvn install -Dmaven.test.skip=true mvn deploy mvn hel…
Java虚拟机(JVM)体系结构概述及各种性能参数优化总结 2014年09月11日 23:05:27 zhongwen7710 阅读数 1437 标签: JVM调优jvm 更多 个人分类: Java知识点总结技术架构原理 https://blog.csdn.net/zhongwen7710/article/details/39213377 写的很好.. 堆栈分不清楚的我 愧对计算机系毕业.. 第一部分:相关的概念 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变…