目录

  1,Java体系结构

  2.jvm执行引擎

  3,ClassLoader的体系结构

  4,java class文件

概述

  其实,学java不算新手了,但是却感觉很多基本的知识,我们一开始也许是记住而不深究,我觉得有一些概念,还是需要了解.

  我们所说的java程序,需要jvm,java api,java class的辅助才能运行.我们从下面的图片可以看到,JDK,JRE,java api和JVM以其他们之间的关系:

  也就是说,JDK>JRE>Java api>JVM.

1,Java体系结构

  1)Java Language

  2)Java class文件格式

  3)Java应用程序接口(API)

  4)JVM

 当编写一个java程序并运行的时候,同时用到这4个技术:使用'Java Language'编写源代码->将它编译成'java class'文件->在'jvm'中运行该'class'文件.在编写程序时,通过调用类(这些类实现了java api)中的方法来访问系统资源(例如I/O).如图1-1:

JVM的任务是装载 'class'文件,并运行其中的字节码.如图1-2,jvm中包含一个类装载器(class loader),它可以从程序和api中装载class文件.java api中只有程序运行时需要的那些类才会被装载.

2.jvm执行引擎

  有4种执行引擎,分别为:

  1)一次性解释字节码.

  2)即时编译器(Just-in-time compiler),这种执行引擎比第一种的更快,但是也更消耗内存.在这种情况下,第一次被执行的字节码会被编译成本地机器码,编译出的本地机器码会被缓存,当方法以后被调用的时候可以重用.

  3)自适应优化器.在这种方法中,jvm开始的时候解释字节码,但是会监视运行中程序的活动,并记录使用最为频繁的代码段.程序运行的时候,jvm只把那些活动最为频繁的代码编译为本地机器码.而其他代码,由于使用不频繁,继续保留为字节码-由jvm继续解释它们.一个自适应优化器可以使得 jvm在 80%~90%的时间里执行被优化过的代码,而只需要编译10%~20%对性能有影响的代码.

  4)由硬件芯片构成,它由本地方法执行java字节码.这种执行引擎实际上是内嵌在芯片里的.

3,ClassLoader的体系结构

  用户定义的ClassLoader使得在运行时扩展java应用程序成为可能.当被装载的类引用了另外一个类的时候,jvm将使用装载第一个类的ClassLoader去装载被引用的类.如,jvm使用某一特定的ClassLoader装载Volcano这个类,而Volcano类使用一个叫Lava类(如调用Lava类的一个方法),那么jvm将使用装载Volcano这个类的ClassLoader去装载Lava.这样,被该ClassLoader返回的Lava类就动态地与Volcano类建立联系.由于jvm使用这种方式进行类的装载,所以被装载的类默认情况下只能看到被同一个ClassLoader装载的别的类.

  通过允许使用不同的用户自定义的类装载器装载不同来源的class文件,他们把不同来源的class文件放置在不同的命名空间中,它就能够限制或阻止不同来源的代码之间的相互访问.

4,java class文件

  java class文件主要在平台无关性和网络移动性方面使java更适应于网络.

  1)平台无关性)它为java程序提供独立于底层主机平台的二进制形式的服务.通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作(如用c/c++编写的程序).而java class文件是可以运行在任何支持jvm的硬件平台和操作系统上的二进制文件.

  当编译和链接一个c++程序的时候,所得的可执行二进制文件,只能在特定平台的和操作系统上运行,是因为这个二进制文件包含了目标处理器的机器语言.

  除了特定的处理器的机器语言之外,传统的二进制可执行文件的另外一个依赖性是具体平台的属性是整数的字节顺序.例如,在支持x86系列处理器的二进制可执行文件中,字节顺序是地位之前;而对于PowerPC处理器,则是高位在前.java class文件中字节顺序是高位在前(而与平台无关).

  2)网络移动性)class文件设计紧凑,所有可以快速在网络上传送.其次,java是动态链接和动态扩展,class文件可以在需要的时候才下载.

jvm-初探的更多相关文章

  1. JVM初探 -JVM内存模型

    JVM初探 -JVM内存模型 标签 : JVM JVM是每个Java开发每天都会接触到的东西, 其相关知识也应该是每个人都要深入了解的. 但接触了很多人发现: 或了解片面或知识体系陈旧. 因此最近抽时 ...

  2. JVM初探- 使用堆外内存减少Full GC

    JVM初探-使用堆外内存减少Full GC 标签 : JVM 问题: 大部分主流互联网企业线上Server JVM选用了CMS收集器(如Taobao.LinkedIn.Vdian), 虽然CMS可与用 ...

  3. JVM初探- 内存分配、GC原理与垃圾收集器

    JVM初探- 内存分配.GC原理与垃圾收集器 标签 : JVM JVM内存的分配与回收大致可分为如下4个步骤: 何时分配 -> 怎样分配 -> 何时回收 -> 怎样回收. 除了在概念 ...

  4. JVM初探

    ### JVM分为类的加载生命周期和gc垃圾回收两个大的方面#####首先是类的生命周期, 类的加载: --> 记载字节码 ---> 这个过程有类的加载起参与,双亲委托机制() --> ...

  5. JVM初探(三):类加载机制

    一.概述 我们知道java代码会被编译为.class文件,这里class文件中的类信息最终还是需要jvm加载以后才能使用. 事实上,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转 ...

  6. JVM初探(五):类的实例化

    一.概述 我们知道,一个对象在可以被使用之前必须要被正确地实例化.而实例化实际指的就是以一个java类为模板创建对象/实例的过程.比如说常见的 Person = new Person()代码就是一个将 ...

  7. JVM学习笔记(一):JVM初探

    1 来源 来源:<Java虚拟机 JVM故障诊断与性能优化>--葛一鸣 章节:第一章 本文是第一章的一些笔记整理. 2 Java里程碑 2.1 Java起源 1990年Sun公司决定开发一 ...

  8. JVM初探之类文件结构

    java 的 .class 文件字节码如图:Class 文件是一组以8字节为基础单位的二进制流,各个数据项目有着严格的结构.下面我们介绍下class文件的结构. 魔数 class文件的头4个字节是魔数 ...

  9. 沉淀再出发:jvm的本质

    沉淀再出发:jvm的本质 一.前言 关于jvm,使用的地方实在是太多了,从字面意思上我们都能明白这也是一个虚拟机,那么其他的虚拟机都会用来运行别的操作系统的,而jvm却是实现了可以在不用的操作系统之上 ...

  10. JVM(零):走入JVM

    JVM(零):走入JVM 本系列主要讲述JVM相关知识,作为本系列的第一篇文章,本文从Java为什么是一个跨平台的语音开始介绍,逐步引入Java虚拟机的概念,并给出一个JVM相关知识图谱,可以让读者从 ...

随机推荐

  1. 如何成为一名优秀的C程序员

    如何成为一名优秀的C程序员 英文原文:To become a good C programmer 问题的提出 每过一段时间我总会收到一些程序员发来的电子邮件,他们会问我是用什么编程语言来编写自己的游戏 ...

  2. Unity3d 基础知识学习 工具篇

    Unity3d  层(layer)的学习 @广州小龙 unity中的层是个很有用的东西, 点击层的下拉框,点击Add Layer,可以打开层管理器,我新建了一个层为test 他的id值是8,这个后面会 ...

  3. 23个经典JDK设计模式(转)

    下面是JDK中有关23个经典设计模式的示例: Structural(结构模式) Adapter: 把一个接口或是类变成另外一种. o    ● java.util.Arrays#asList() o  ...

  4. CH Round #52 - Thinking Bear #1 (NOIP模拟赛)

    A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...

  5. 【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错

    原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程 ...

  6. 字符串(后缀数组):POJ 3294 Life Forms

    Life Forms Description You may have wondered why most extraterrestrial life forms resemble humans, d ...

  7. w​i​n​d​o​w​s​7​旗​舰​版​I​I​S​6​配​置​-​保​证​能​发​布

    http://wenku.baidu.com/view/20b4d26248d7c1c708a145d1.html

  8. Nodejs in Visual Studio Code 14.IISNode与IIS7.x

    1.开始 部署IISNode环境请参考:Nodejs in Visual Studio Code 08.IIS 部署Nodejs程序请参考:Nodejs in Visual Studio Code 1 ...

  9. [Locked] Factor combinations

    Numbers can be regarded as product of its factors. For example, 8 = 2 x 2 x 2; = 2 x 4. Write a func ...

  10. Necklace of Beads

    http://poj.org/problem?id=1286 // File Name: poj1286.cpp // Author: bo_jwolf // Created Time: 2013年1 ...