- 浏览: 499215 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
JVM JRE JDK区别和联系
JVM 调优就是调节内的大小和找出内存溢出的问题所在(mat工具),和内存的回收机制的选择
字节码文件经过解析器解析后才能执行,而这个解析器是属于JVM的一部分。
(1)JVM是Java 虚拟机
(2)JDK是Java开发包
(3)JRE是Java运行环境
其中三者的关系是包含的,JRE包含JVM,JDK包含JRE。
RE中已经有了Java虚拟机,JDK中也包含了Java运行环境。所以只要安装好了JDK之后,自然就弄好了JRE和JVM。
JVM规范:一个约束JVM实现的文档,它正式描述一个虚拟机最基本的实现要求。使用单一的JVM规范是为了确保不同JVM实现之间的互操作性。
JVM实现:一个符合JVM规范要求的的电脑程序。
JVM实例:一个JVM实现程序运行的进程。
JRE是一个包含运行一个Java程序所需要东东的软件包。它包括一个JVM实现和一个Java Class Library实现。
Java Class Library(JCL)是一个Java程序可在运行时调用的动态可加载库的集合。
JRE包括JVM、Java核心类库和支持文件。
JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索
Java 的类加载器的工作原理:
当执行 java ***.class 的时候, java.exe 会帮助我们找到 JRE ,接着找到位于 JRE 内部的 jvm.dll ,这才是真正的 Java 虚拟机器 , 最后加载动态库,激活 Java 虚拟机器。虚拟机器激活以后,会先做一些初始化的动作,比如说读取系统参数等。一旦初始化动作完成之后,就会产生第一个类加载器―― Bootstrap Loader , Bootstrap Loader 是由 C++ 所撰写而成,这个 Bootstrap Loader 所做的初始工作中,除了一些基本的初始化动作之外,最重要的就是加载 Launcher.java 之中的 ExtClassLoader ,并设定其 Parent 为 null ,代表其父加载器为 BootstrapLoader 。然后 Bootstrap Loader 再要求加载 Launcher.java 之中的 AppClassLoader ,并设定其 Parent 为之前产生的 ExtClassLoader 实体。这两个加载器都是以静态类的形式存在的。这里要请大家注意的是, Launcher$ExtClassLoader.class 与 Launcher$AppClassLoader.class 都是由 Bootstrap Loader 所加载,所以 Parent 和由哪个类加载器加载没有关系。
类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java执行时系统组件,它负责在运行时查找和装入Class字节码文件。JVM在运行时会产生三个ClassLoader:根装载器、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写,因此我们在Java中看不到它,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar、charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类。其中ExtClassLoader负责装载JRE目录ext中的JAR类包;AppClassLoader负责装载ClassPath路径下的类包。
//====================================
当执行 java ***.class 的时候
java.exe 会帮助我们找到 JRE ,接着找到位于 JRE 内部的 jvm.dll ,这才是真正的 Java 虚拟机器 , 最后加载动态库,激活 Java 虚拟机器。(虚拟机器实例建立起来了)
JVM在运行时会产生三个ClassLoader:根装载器(核心类库)、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。
加载完在后,JVM跳转到应用的main位置开始运行应用
遇到有一些类没有加载,就产中断或异常,JVM在中断或异常中进行类的加载,加裁完成后再跳回原来的位置继续运行
//====================================
JVM就是运行java字节码的虚拟机,包含类加载器、内存管理和代码运行等
JVM是不会自动跑起来的,这就要求有一个程序去初始化一个JVM实例出来,并跳转到JVM中去运行,这个程序就是JRE,用于创建一个JVM实例并运行应用,当然jre还包含了一些基础类库,这些库会在JVM开始运行应用前最先全部加载到内存中,因为这些类基本上都会用到的
https://blog.csdn.net/gfangxiong/article/details/7425563(JVM加载class文件的原理机制)
https://www.cnblogs.com/zhengbin/p/5631987.html(JVM——三个ClassLoader详解)
JVM 调优就是调节内的大小和找出内存溢出的问题所在(mat工具),和内存的回收机制的选择
字节码文件经过解析器解析后才能执行,而这个解析器是属于JVM的一部分。
(1)JVM是Java 虚拟机
(2)JDK是Java开发包
(3)JRE是Java运行环境
其中三者的关系是包含的,JRE包含JVM,JDK包含JRE。
RE中已经有了Java虚拟机,JDK中也包含了Java运行环境。所以只要安装好了JDK之后,自然就弄好了JRE和JVM。
JVM规范:一个约束JVM实现的文档,它正式描述一个虚拟机最基本的实现要求。使用单一的JVM规范是为了确保不同JVM实现之间的互操作性。
JVM实现:一个符合JVM规范要求的的电脑程序。
JVM实例:一个JVM实现程序运行的进程。
JRE是一个包含运行一个Java程序所需要东东的软件包。它包括一个JVM实现和一个Java Class Library实现。
Java Class Library(JCL)是一个Java程序可在运行时调用的动态可加载库的集合。
JRE包括JVM、Java核心类库和支持文件。
JRE中由ClassLoader负责查找和加载程序引用到的类库,基础类库ClassLoader会到rt.jar中自动加载,其它的类库,ClassLoader在环境变量CLASSPATH指定的路径中搜索
Java 的类加载器的工作原理:
当执行 java ***.class 的时候, java.exe 会帮助我们找到 JRE ,接着找到位于 JRE 内部的 jvm.dll ,这才是真正的 Java 虚拟机器 , 最后加载动态库,激活 Java 虚拟机器。虚拟机器激活以后,会先做一些初始化的动作,比如说读取系统参数等。一旦初始化动作完成之后,就会产生第一个类加载器―― Bootstrap Loader , Bootstrap Loader 是由 C++ 所撰写而成,这个 Bootstrap Loader 所做的初始工作中,除了一些基本的初始化动作之外,最重要的就是加载 Launcher.java 之中的 ExtClassLoader ,并设定其 Parent 为 null ,代表其父加载器为 BootstrapLoader 。然后 Bootstrap Loader 再要求加载 Launcher.java 之中的 AppClassLoader ,并设定其 Parent 为之前产生的 ExtClassLoader 实体。这两个加载器都是以静态类的形式存在的。这里要请大家注意的是, Launcher$ExtClassLoader.class 与 Launcher$AppClassLoader.class 都是由 Bootstrap Loader 所加载,所以 Parent 和由哪个类加载器加载没有关系。
类装载工作由ClassLoader及其子类负责,ClassLoader是一个重要的Java执行时系统组件,它负责在运行时查找和装入Class字节码文件。JVM在运行时会产生三个ClassLoader:根装载器、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。其中,根装载器不是ClassLoader的子类,它使用C++编写,因此我们在Java中看不到它,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar、charsets.jar等。ExtClassLoader和AppClassLoader都是ClassLoader的子类。其中ExtClassLoader负责装载JRE目录ext中的JAR类包;AppClassLoader负责装载ClassPath路径下的类包。
//====================================
当执行 java ***.class 的时候
java.exe 会帮助我们找到 JRE ,接着找到位于 JRE 内部的 jvm.dll ,这才是真正的 Java 虚拟机器 , 最后加载动态库,激活 Java 虚拟机器。(虚拟机器实例建立起来了)
JVM在运行时会产生三个ClassLoader:根装载器(核心类库)、ExtClassLoader(扩展类装载器)和AppClassLoader(系统类装载器)。
加载完在后,JVM跳转到应用的main位置开始运行应用
遇到有一些类没有加载,就产中断或异常,JVM在中断或异常中进行类的加载,加裁完成后再跳回原来的位置继续运行
//====================================
JVM就是运行java字节码的虚拟机,包含类加载器、内存管理和代码运行等
JVM是不会自动跑起来的,这就要求有一个程序去初始化一个JVM实例出来,并跳转到JVM中去运行,这个程序就是JRE,用于创建一个JVM实例并运行应用,当然jre还包含了一些基础类库,这些库会在JVM开始运行应用前最先全部加载到内存中,因为这些类基本上都会用到的
https://blog.csdn.net/gfangxiong/article/details/7425563(JVM加载class文件的原理机制)
https://www.cnblogs.com/zhengbin/p/5631987.html(JVM——三个ClassLoader详解)
发表评论
-
elasticSearch使用
2022-04-27 08:42 421ElasticSearch 基于Apache Lucene构建 ... -
IDEA 快捷键
2022-03-02 16:55 250大小写转换快捷键 ctr+shift+u IDEA ... -
每天学到的技术点3
2022-02-21 20:01 2511.TEXT与BLOB的区别,二者 ... -
zookeeper dubbo 安装
2021-12-04 19:27 325docker-machine ssh default d ... -
JVM 调优与测试
2021-05-22 22:24 586VisualVM 能够监控线程,内存情况,查看方法的CPU ... -
百度人脸识别
2021-05-21 16:11 366package com.gaojinsoft.htwy.y20 ... -
springboot tomcat 参数配置与数据库连接池多少的性能分析
2021-05-12 22:15 565参数配置与数据库连接池多少的性能分析 tomcat线程数 ... -
log4j2应用
2020-07-23 14:16 367https://blog.csdn.net/giventian ... -
文件上传下载
2020-07-06 13:16 4261.文件ID,名字(源,目标),大小,路径(/aa/bb/s. ... -
base64与file 相互转换
2019-10-23 18:19 785base64与file 相互转换 import org. ... -
百度身份证识别
2019-10-18 18:19 698package com.gaojinsoft.htwy.y20 ... -
JAVA 实用方法
2019-05-16 09:50 358//得到xml文件中的sql文本 public St ... -
导出内容到excel文件方法
2019-05-15 10:52 514@SuppressWarnings("rawtype ... -
要求fsss
2019-09-21 21:30 311/* */ package com.midea.com ... -
反射、类信息、动态代理、CGLIB动态代理原理与测试
2019-01-29 21:04 489package com.midea.common.classT ... -
JVM 监控工具
2019-01-21 18:04 384JVM 监控工具 //========== ... -
java 线程池线程复用原理
2019-01-15 17:10 1164java 线程池线程复用原理 其实就一个大run()把其 ... -
LockSupport原理
2019-01-11 18:01 703LockSupport原理 在Java语言中,每一个对象有 ... -
runnable与thread 区别
2019-01-11 14:49 683runnable与thread 区别 在java中可有两种 ... -
Java的Future模式
2019-01-11 10:08 450Java的Future模式 runnable与thread ...
相关推荐
### JDK、JRE与JVM的区别详解 #### 一、引言 在深入探讨JDK、JRE与JVM之间的区别之前,我们首先需要明确这三个概念的基本定义及其各自的作用。对于初学者而言,理解这些核心组件是学习Java编程的基础。 #### 二、...
下面我们将详细介绍 JDK 和 JRE 的概念、区别和关系。 JDK JDK 是 Java 语言的软件开发工具包,它包含了 Java 语言的编译器、调试器、文档生成器等开发工具。JDK 的主要组成部分包括: * Java 编译器(javac):...
### JDK与JRE的区别 #### 一、概念解析 **JDK**(Java Development Kit):作为Java开发工具包,它是面向开发人员的核心组件。它不仅包含必要的运行环境(即JRE),还提供了完整的Java软件开发环境,包括编译器...
一张图看懂JVM、JRE、JDK
Java开发和运行环境中,JRE(Java Runtime Environment)与JDK(Java Development Kit)是两个至关重要的组件。它们之间的主要区别在于用途和包含的内容。 JRE是Java运行环境,它是运行Java应用程序所必需的。它...
3. **JVM、JRE和JDK的关系** - **JVM**(Java虚拟机)是JRE的核心部分,负责执行Java字节码。 - **JRE** 包含了JVM以及运行Java程序所需的基本类库和其他资源。 - **JDK** 包含了JRE的所有组件,并增加了用于...
Java开发工具包(JDK)、Java运行环境(JRE)和Java虚拟机(JVM)是Java编程语言的三个核心组件,它们之间有着密切的关系和明确的分工。 JDK(Java Development Kit)是Java语言的软件开发工具包,它是整个Java开发...
### JDK与JRE的区别:深度解析 在深入探讨JDK(Java Development Kit)与JRE(Java Runtime Environment)之间...总之,JDK和JRE各自服务于不同的目的,了解它们的区别对于正确选择和使用Java开发和运行环境至关重要。
Java开发中的JDK、JRE和JVM是三个至关重要的概念,它们构成了Java技术的基础框架。下面将详细阐述这三个术语的区别与联系。 首先,JDK(Java Development Kit)是Java开发工具包,它是整个Java开发的核心。JDK包含...
在安装和配置Linux上的JDK 1.7时,通常需要下载对应的二进制文件,然后解压到指定目录(如/usr/lib/jvm),设置环境变量JAVA_HOME、PATH和CLASSPATH。同时,为了确保系统能够正确识别并使用新安装的JDK,还需要更新...
本文主要讲解JDK、JRE和JVM之间的区别。 一、JDK、JRE、JVM的关系 1. JDK(Java Development Kit):Java开发工具包,是Java开发人员必备的软件,包含了编译器(javac)、JRE、调试器、文档生成工具、打包工具等。...
Java开发工具包(Java Development Kit,简称JDK)是Java编程语言的核心组件,它为开发者提供了编译、调试和运行Java应用程序所需的所有工具。在给定的压缩包中,我们有"jdk1.8.0_05",这是一个特定版本的JDK,发布...
JDK 是开发和运行 Java 应用程序所需的一组工具和库的集合,包括 JRE(Java Runtime Environment)和开发工具。 JVM(Java Virtual Machine)是 JDK 的核心组成部分,它负责执行字节码,提供了一个“一次编写,到处...
值得注意的是,JDK的JRE提供了两种不同类型的JVM,即client和server版本,分别用于优化轻量级应用和重量级应用的执行效率。 JRE,即Java Runtime Environment,是运行Java程序所必需的环境。它包含了JVM,这是一个...
【Java面试题】JDK、JRE与JVM的区别
JDK(java Development Kit):java 的开发和运行环境,包括java 的开发工具和 jre,在程序员的电脑上当然要安装JDK; JRE(Java Runtime Environment):它是Java运行环境,包括,java 运行的所需的类库+JVM(java ...
Java开发中的JDK、JRE和JVM是三个至关重要的组件,它们构成了Java技术栈的基础。理解它们的区别和关系对于任何Java开发者来说都是至关重要的。 首先,Java开发工具包(JDK)是Java编程的核心组件,它包含了开发Java...