`

JVM学习(一)

 
阅读更多

前几天在图书馆的书架上看到了这本很旧的书——深入java虚拟机(Inside theJava Virtual Machine,Second Edition),简单的翻了下确实 不错,因此回去后也把电脑桌面上那个jvm资料的快捷方式删掉,决定好好学习下这本书,下面写到的内容大为从这本书上摘录到的内容,写出来大家一起学习进步。

l Java体系的重要特性:平台无关性,安全性,网络移动性

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

Ø JVM

JVM的主要任务是装载class文件,并且执行其中的字节码。字节码是由JVM中的执行引擎来执行的。不同的JVM,执行引擎可能被设计 的很不同。常见的引擎有:一次性执行引擎,这种引擎直接解释执行bytecode; JIT编译器,这种引擎会在将第一次执行的字节码编译成本地机器代码,编译出的本地代码会被缓存,当方法以后被调用 的时候 可以重用;第三种引擎是自适应优化器,在这种方法里,虚拟机开始的时候解释字节码,但是会监视运行中程序 的代码的执行,并且记录下使用最频繁的代码段,程序运行的时候,虚拟机只把那些活动最频繁的代码编译成本地代码。

Ø Java class文件

独立于底层主机平台的二进制文件,它是JVM的“机器语言”。

Ø Java API

Java API的class文件与本地平台密切相关,为了访问本地资源 ,Java API调用了本地方法。

正是由于在每个特定的主机平台上都 明确地实现了JVM和Java API,才使Java程序成为平台无关性的程序。

Java API与JVM一起构成了Java的运行时系统,它们也被 称为Java平台。

Ø Java程序设计语言

l Java体系结构的代价

所谓有得必有失,java语言为实现平台无关性,安全性等特性也付出了必要的代价。

Ø 性能(说java不如C++的人大多会拿这个说事,但其实我们知道现代JVM执行引擎的设计已经在一定程度上消除或缩小了这个差距)

Ø 最小公分母问题:即有些特性只在某一个或几个平台 上存在,而有些功能 在某个平台上不存在,但在大多数平台上存在,API的设计者在设计 的时候 必须 有所取舍,有所添加。

Ø 反编译相当容易(这个连360软件管家中都有一个java反编译器)

l Java安全之——沙箱安全模型

沙箱模型使你可以接收任何来源的代码,但是当来处不可靠来源的代码运行时,沙箱限制它进行可能破系统的任何操作。组成Java沙箱的基本组件包括:

Ø ClassLoader体系结构——在三个方面对Java的沙箱起作用

a)它防止恶意代码去干涉善意代码——因为不同的ClassLoader装载的类存在于不同的namespace中,而不同的namespace中的类甚至都 不能察觉到彼此的存在,除非显式的提供了允许它们进行交互的机制(?怎样提供??)

b)它守护了被 信任的类库的边界

这个主要 是通过ClassLoader的委托机制来实现的。(参考http://www.sunxin.org/forum/thread/19764.html

c)它将代码归入某类(称为保护域),该类确定了代码可以进行哪些操作。

Ø class文件检验器

用来保证装载的class文件内容有正确的内部结构,它在执行前对字节码进行一次分析,每遇到一个跳转指令时都 进行检验。

Ø JVM中内置的安全机制

在运行时强制执行严格的类型规则,自动GC,数组边界检查,空引用检查等。

Ø 安全管理器和Java API

安全管理器是用于保护虚拟机外部资源 不被 虚拟机内部的恶意或者有漏洞的代码侵犯。

好了,这次就这么多了,感觉还是有很多不懂的地方,路过的大侠还请多多指教。。

分享到:
评论

相关推荐

    JVM学习笔记(一)

    ### JVM学习笔记(一) #### 一、JVM概述与工具使用 JVM(Java Virtual Machine)是Java语言的核心组成部分之一,它为Java程序提供了一个跨平台的运行环境。本篇学习笔记主要介绍如何利用一系列工具来查看和监控JVM...

    JVM学习资料+笔记

    这个资料包不仅涵盖了理论知识,还包含个人的学习笔记,对于学习和掌握JVM的各个方面都将大有裨益。无论是初学者还是经验丰富的开发者,都可以从中找到提升自己技能的宝贵资源。通过深入学习和实践,可以更好地理解...

    JVM详解与学习

    ### JVM详解与学习 #### Java相关 ##### 1.1 Java定义 Java 是一种广泛使用的高级编程语言,具有面向对象、跨平台等特性。它的设计理念是“一次编写,到处运行”,这得益于Java虚拟机(JVM)的存在。JVM使得Java...

    jVM学习笔记.ppt

    JVM的学习可以从其基本结构、代码编译和执行过程,以及内存管理和垃圾回收机制三个方面进行深入探讨。 首先,JVM的基本结构分为逻辑结构和物理结构。逻辑结构主要包括Java源码编译器、JVM执行引擎、类加载器等组件...

    JVM学习笔记.docx

    本篇JVM学习笔记主要涵盖了以下几个核心知识点: 1. **运行时数据区**: - **程序计数器**:记录当前线程执行的字节码的行号,用于线程恢复执行时跳转到正确位置。 - **Java虚拟机栈**:每个方法执行时创建的栈帧...

    JVM学习笔记

    ### JVM学习笔记 #### JVM内存模型 (JMM) JVM内存模型主要分为以下几个部分: - **Java堆**:这是所有线程共享的一块区域,在虚拟机启动时创建。主要用于存放对象实例,几乎所有的对象实例都在这里分配内存。 - *...

    java之jvm学习笔记五(实践写自己的类装载器)

    这个“java之jvm学习笔记五(实践写自己的类装载器)”很可能是对这一主题的详细探讨。 类装载器在Java中的主要职责是动态加载类到JVM中。Java的类装载器分为三个基本层次:启动类装载器(Bootstrap ClassLoader)、...

    java之jvm学习笔记十一(访问控制器)-源码

    本文将深入探讨JVM中的访问控制器,主要基于“java之jvm学习笔记十一(访问控制器)-源码”这一主题,以及相关的源码分析。 首先,我们得了解Java的安全模型。Java安全模型基于一种称为安全管理器(SecurityManager)...

    JVM工作原理学习笔记

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。本文将深入探讨JVM的工作原理,包括内存管理、类加载机制、垃圾回收以及性能优化等方面。 首先,我们来理解JVM的内存结构...

    JVM核心知识学习和整理.docx

    JVM内存管理的另一个重要方面是垃圾收集(Garbage Collection, GC)。垃圾收集器负责自动清理不再使用的对象,以释放内存。常见的垃圾收集策略有标记-清除、复制、标记-整理和分代收集。不同的垃圾收集器,如Serial...

    jvm瓶颈定位 java jvm 学习

    Java虚拟机(JVM)是Java开发中的核心组成部分,它负责执行字节码,管理内存,以及优化程序性能。在Java应用的运行过程中,如果出现性能...通过持续学习和实践,开发者能够更好地驾驭JVM,解决实际开发中的性能问题。

    JVM学习资源学习资源

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在深入探讨JVM之前,我们先要理解Java编程语言的...通过学习和实践,我们可以更好地理解和优化JVM,提升Java应用的整体性能。

    jdk,jvm源码

    个人网站可能提供了一些关于JVM源码分析的教程和资源,对于深入学习JVM的运行机制,这是一个很好的参考资料。通过结合理论知识与实际源码阅读,可以更好地掌握Java编程的精髓,提高解决复杂问题的能力。

    JVM学习 - 副本.xmind

    本人手打笔记,欢迎来白嫖,学完Jvm 看java代码的眼界就不一样了

    jvm学习环境搭建分享.docx

    本篇文章将分享一个简单的JVM学习环境搭建步骤,这个环境基于Ubuntu操作系统,通过虚拟机软件VMware进行搭建。 首先,我们需要下载并安装VMware。VMware是一款强大的虚拟机软件,它允许我们在一个主机系统上运行多...

    JVM GC原理深入学习.pdf

    本文档可以作为学习JVM GC的工具书所使用,对于想深入学习JVM GC原理的同学,这一本书就足够了。因为本文档是作者花费数月时间,查阅GC相关的国内外众多资料并加以思路清晰的条目化而形成。因为篇幅所限,可能有部分...

    一个开源的JVM

    Java虚拟机(JVM)是Java编程语言的核心组成部分,它负责执行字节码,使得Java程序可以在任何支持JVM的平台上运行,实现“一次编写...对于想要深入学习Java底层和JVM原理的开发者来说,这是一个非常有价值的学习资源。

Global site tag (gtag.js) - Google Analytics