JVM的简单运行流程:主要将字节码文件加载到JVM的内存中,负责跨平台解释字节码文件到不同的操作系统。

JVM的基本结构:

类加载器、执行引擎、运行时数据区域、本地接口

类的装载

加载、连接(验证、准备、解析)、初始化、使用、卸载

class 保存类的定义和结构  保存在堆中

初始化:执行类的构造器(clinit),为类的静态变量赋予正确的初始值。

构造器:

1.static的变量

2.static{语句}

构造方法:实例化对象

类加载器双亲委派模型

为什么要使用?

避免重复加载。

Jdk已有加载器

Bootstrap ClassLoader  jvm的启动加载器 c++编写的内核中看不到  启动类加载器 是下面的父类  主要加载 rt.jar 它的父类为null

Extension ClassLoader  extend classLoder     java编写的   扩展类加载器 是下面的父类  %JAVA_HOME/lib/ext/*.jar%

App  ClassLoader extend classLoder java编写的   系统类加载器  ClassPATH

自定义加载器 extend classLoder  自定义路径

探秘JVM的底层奥秘的更多相关文章

  1. 探索JVM底层奥秘ClassLoader源码分析

    1.JVM基本结构: *.java--------javac编译------>*.class-----ClassLoad加载---->运行时数据区------->执行引擎,接口库-- ...

  2. JVM的底层实现原理

    JVM是Java程序运行的环境,但是他同时也是一个操作系统的一个应用程序的一个进程,因此JVM也有他自己的运行生命周期,也有自己的代码和数据空间. JDK JDK在Java的整个体系中充当一个生产加工 ...

  3. Redis专题(2):Redis数据结构底层探秘

    前言 上篇文章Redis闲谈(1):构建知识图谱介绍了redis的基本概念.优缺点以及它的内存淘汰机制,相信大家对redis有了初步的认识.互联网的很多应用场景都有着Redis的身影,它能做的事情远远 ...

  4. 探秘 Java 热部署二(Java agent premain)

    # 前言 在前文 探秘 Java 热部署 中,我们通过在死循环中重复加载 ClassLoader 和 Class 文件实现了热部署的功能,但我们也指出了缺点-----不够灵活.需要手动修改文件等操作. ...

  5. JVM 必备指南

    简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来定义的一个虚拟的计算机,被设计用来解释执行从Java源码编译而来的字节码.更通俗地说,JVM是指对这个规范的 ...

  6. JVM必备指南(转)

    本文由 ImportNew - xiafei 翻译自 anturis.欢迎加入翻译小组.转载请见文末要求. 简介 Java虚拟机(JVM)是Java应用的运行环境,从一般意义上来讲,JVM是通过规范来 ...

  7. 【java虚拟机系列】java虚拟机系列之JVM总述

    我们知道java之所以能够快速崛起一个重要的原因就是其跨平台性,而跨平台就是通过java虚拟机来完成的,java虚拟机属于java底层的知识范畴,即使你不了解也不会影响绝大部分人从事的java应用层的 ...

  8. 十问 JVM

    今天我们来讨论下 Java 虚拟机,通过一系列常见的问题来逐渐深入了解 JVM 创建对象过程,内存布局,类加载以及 GC 回收算法等机制. 十问 JVM 问题整理: Java虚拟机创建对象的过程 (使 ...

  9. java之JVM(一)

    内存模型: Java内存模型建立在自动内存管理的概念之上.当一个对象不再被一个应用所引用,垃圾回收器就会回收它,从而释放相应的内存. JVM从底层操作系统中分配内存,并将它们分为以下几个区域: 方法区 ...

随机推荐

  1. Android开发环境搭建(个人环境非通用)

    1.安装andorid studio 2.连接模拟器,AMD处理器为无法使用AVD manager ,所以连接第三方的Genymotion模拟器,设置中安装Genymotion插件,重启即可(Geny ...

  2. (转)LoadRunner集合点设置1

    集合点的意思时等到特定的用户数后再一起执行某个操作,比如一起保存,一起提交(我们通常意义上的并发数并不是指一起提交或者一起保存),一般情况下使用不到集合点,不过,订票系统或者促销类需要用到,比如说某个 ...

  3. <Math> 50 367

    50. Pow(x, n) abs (Integer.MIN_VALUE) > Integer.MAX_VALUE class Solution { public double myPow(do ...

  4. [LeetCode] 857. Minimum Cost to Hire K Workers 雇佣K名工人的最低成本

    There are N workers.  The i-th worker has a quality[i] and a minimum wage expectation wage[i]. Now w ...

  5. thinkphp5.1 - twig使用

    thinkphp5.1 - twig使用1.安装按照:https://github.com/yunwuxin/think-twigTwig Template For ThinkPHP5 安装 comp ...

  6. OAuth2.0 自我领悟

    grant_type 授权模式 authorization_code 标准的Server授权模式,授权码模式 password 基于用户密码的授权模式,用户密码模式 client_credential ...

  7. 用欧拉计划学Rust语言(第7~12题)

    最近想学习Libra数字货币的MOVE语言,发现它是用Rust编写的,所以先补一下Rust的基础知识.学习了一段时间,发现Rust的学习曲线非常陡峭,不过仍有快速入门的办法. 学习任何一项技能最怕没有 ...

  8. go-gin-api 路由中间件 - 日志记录

    概述 首先同步下项目概况: 上篇文章分享了,规划项目目录和参数验证,其中参数验证使用的是 validator.v8 版本,现已更新到 validator.v9 版本,最新代码查看 github 即可. ...

  9. 【MySQL】Mariadb安装

    Mariadb安装 1.解压 [root@oradb bin]# tar zxvf mariadb-10.3.18-linux-x86_64.tar.gz [root@oradb bin]# mv m ...

  10. javascirpt的json.stringify()方法在IE浏览器兼容性模式下出错的原因与解决办法

    今天开机混底薪的时候遇到一个JSON.stringify()在IE浏览器兼容模式下的问题. 问题描述 一个弹窗选择的功能原来好好的,突然就不行了. 想要调试调试不了,报错信息也看不到(一开F12这破I ...