`
foreversunyao
  • 浏览: 204095 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入Java虚拟机

阅读更多

第一章:Java 体系结构介绍

Java 体系结构包括的四个独立但相关的技术:

Java 程序设计语言,Java class 文件格式, Java 应用编程接口,Java 虚拟机

Java 面向网络的三大支柱:平台无关性,安全性和网络移动性。

不同的执行引擎:1,由软件实现的虚拟机,最简单的执行引擎就是一次性解释字节码  2,即时编译(第一次被执行的字节码被编译成本地机器代码,编译出的本地机器代码会被缓存起来)  3,自适应优化器(虚拟机只会把那些活动频繁的代码编译成本地代码)。

Java 程序通过调用本地方法和主机进行交互,本地方法保存在动态链接库中,虚拟机装载包含这个本地方法的动态哭,并调用。

一个Java 应用程序可以使用两种类装载器:启动类装载器和用户定义的类装载器。

被装载的类默认情况下只能看到被同一个类装载器装载的别的类,被不同类装载器装载的类存放在不同的命名空间中,它们之间不能互相访问,除非显示的允许这样做。

Java class 文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件。

Java API是运行库的集合,它提供一套访问主机系统资源的标准方法。运行Java程序时,虚拟机装载程序的class文件所使用的Java API class 文件。由于Java API class 文件调用了本地方法,Java 程序就不需要再调用它们了。

 

第二章平台无关

本地方法在三种情况下适用:为了使用底层的主机平台的特性,而这个特性不能通过Java API访问;为了访问一个老的系统或者使用一个已有的库,而这个系统或库不是用Java编写的;为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。

在编写平台独立的Java程序时,还必须遵从两条原则:1,不要依赖及时终结(finalization)来达到程序的正确性 2,不要依赖线程的优先级来达到程序的正确性

 

第三章 安全

Java提供了一个用户可配置的“沙箱”,在沙箱中可以放置不可靠的Java程序,沙箱对不可靠程序的活动进行了限制。

组成Java沙箱的基本组件:类装载器结构,class文件检验器,内置于Java虚拟机的安全特性,安全管理器和Java API

 

第四章 网络移动性

Java应用程序从某个类的main()方法开始执行,其他的类在程序需要的时候才动态连接。

class文件被设计的很紧凑。

通过对象序列化和远程方法调用RMI,Java API提供了一个在本地对象模型上扩展而成的分布式对象模型。

Jini提供了一个运行时的基础结构,以允许服务提供者为客户机提供服务,也使得客户机可以找到并访问服务。

 

第五章 Java虚拟机

如果在同一台计算机上同时运行三个Java程序,将得到三个Java虚拟机实例。每个Java程序都运行于它自己的Java虚拟机实例中。

当程序中所有的非守护线程都终止了,虚拟机实例将自动退出。

当程序运行时,虚拟机会把所有该程序在运行时创建的对象都放到堆中。当每个新线程被创建时,它都将得到他自己的PC寄存器以及一个Java栈。

数据类型分为:基本类型和引用类型。

装载,连接以及初始化

运行时数据区:方法区,堆,Java栈,PC寄存器,本地方法栈 

方法区中存放类型信息

Java程序在运行时创建的所有类实例或数组都放在同一个堆中,而一个Java虚拟机实例中只存在一个堆空间,因此所有线程都共享这个堆,而由于一个Java程序都占一个Java虚拟机实例,因而每个Java程序都有它自己的堆空间。

Java栈:Java栈以帧为单位保存线程的运行状态,栈帧由三部分组成:局部变量区,操作数栈和帧数据区

当某个线程调用一个本地方法时候,它就进入了一个全新的不受虚拟机限制的世界。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics