`
huazhouji
  • 浏览: 8637 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java虚拟机学习笔记(一)

阅读更多
 

#java虚拟机并不假定任何实现技术或者主机平台。它并不非得是解释型的,它也可以把代码编译成一个实际的CPU的指令集。它也可以用微代码或者直接用芯片实现。

#java虚拟机不识别java代码,只识别一种特殊的文件格式,即class文件格式。

#每个对象具有一个相应的锁(lock)

#恰当地讲,类型是一个编译期概念。

#每个数组也有一个类。数组的类具有奇怪的名称,他们不是有效的java标识符,例如,具有int成分的数组的类名称为”[I”

#标准类Object是所有其他类的超类。一个Object类型的标量可以持有任一对象的引用,不论该对象是类的实例还是数组。 // Object o = new String[10];  ß 这样写是对的!

#字符串文字以及更一般的常数表达式的值的字符串,被用方法String.intern”内部化以共享唯一的实例。字符串文字是类String的实例的引用。

#一个String对象具有一个固定不变的值。

#类成员:类类型包括以下的成员:

       ·从它的直接超类继承的成员。没有直接超类的类Object除外。

       ·从任何直接超接口继承的成员。

       ·在类的主体中声明的成员。

#类中没有用private,protected或者public声明的成员不被在声明该类的包之外的包中声明的子类继承!构造函数和静态初始化函数不是成员,因此不被继承。

#变量可以被标记为transient以指示她们不是对象的永久状态。可用于java实现以支持特殊的系统服务。

#域可以声明为volatile。在这种情况下线程每次访问该变量时都必须使它对该域的工作拷贝与主拷贝一致。而且,代表一个线程的一个或者多个易变变量的主拷贝上的操作由主存储器确切地按照线程要求的顺序进行。

#覆盖方法必须不于它所覆盖的定义冲突。例如,具有一个不同的返回类型。

#接口的所有成员都隐式地是public

#类实现它的所有超接口

#接口中声明的方法不能声明为static,因为在JavaStatic方法不能是abstract。接口主体中声明的方法不能声明为native或者synchronized

#如果接口声明一个方法,则该方法声明被称为覆盖该接口的超接口中所有具有相同签名的方法。否则,超接口中的方法可以被该接口中的代码访问。

#如果一个数组的成分类型是T,则数组自身的类型写作T[]

// 异常

#异常在它的发生点被抛出(thrown),在控制转向的点被捕捉(caught)。JAVA程序也可以使用throw语句显式地抛出异常。这提供了对处理错误情况的老式风格的一个替换。

#java的异常机制与java的同步模型结合在一起,使得当synchronized语句和synchronized方法调用突然结束时,锁被合适地释放。

#虚拟机通过调用某个指定类的方法main启动,传递给main一个字符串数组参数。

#装载(loading)是指寻找一个具有特定名称的类或者接口类型的二进制形式,并且用这个二进制形式构造一个代表类或者接口的class对象的进程。

#装载进程由类ClassLoader和它的子类实现。ClassLoader的不同子类可以实现不同的装载策略。

#链接包括三种不同的行为:检验、准备和对符号引用的解析。

#检验(verification)保证类或者接口的二进制表示的结构是正确的。

#准备(preparation)包括创建类或者接口的静态域以及把这些域初始化为标准的缺省值。

#因为java是多线程的,所以类或者接口的初始化要求仔细的同步,因为同时某个比的线程可能正在试图初始化同一个类或者接口。

#终止函数(finalize)提供了一个释放不能被自动存储器管理者自动释放的资源(例如文件描述符或者操作系统图形上下文)的机会。

#如果在终止中抛出一个不能被捕捉的异常,则该异常被忽略并且该对象的终止停止。

#与任何别的方法一样,finalize方法可以被显式的调用。但是,这样做对对象最终自动终止没有任何影响。

#一般来说,成组的相关类和接口类型将被一起卸载。例如,这可用于卸载被一个特定的类装载器装载的一组相关的类型。

#当一个类的任何实例仍可达到时这个类不能被卸载。

#如果一个类声明了一个不带参数和返回结果的类方法ClassFinalize

       Static void classFinalize() {… }

则在该类被卸载之前这个方法被调用。像对象的finalize方法一样,这个方法将只被自动地调用一次。这个方法可以被可选的声明为private,protected或者public

#虚拟机的退出: 当两件事情之一发生时java虚拟机停止它的全部动作并退出:

       ·所有的非守护线程停止。

       ·某个线程调用了类Runtime或者类systemexit方法,并且退出操作为安全管理者所允许。

#通过用参数true调用类System的方法runFinalizersOnExit来完成。缺省的情况是退出时不运行终止函数的!

#任何线程都可以标为守护线程(daemon thread)当运行在某个线程中的代码创建一个新的Thread对象时,当且仅当创建线程是一个守护线程,新的线程才被初始化地标为守护线程。

#线程基本执行过程: 每个线程有一个工作存储器,它可以在其中保留与别的线程共享的主存储器中的标量的值的拷贝。为了访问一个共享的变量,线程通常首先获得一个锁并清除它的工作存储器。这保证了共享的值以后将从共享的主存储器装载到该线程的工作存储器。通过解锁一个锁,线程保证该线程在其工作存储器中持有的值被写回主存储器。

// JAVA虚拟机结构<o:p></o:p>

#java对象或者是一个动态分配的类实例,或者是一个数组。

#java虚拟机支持的基本数据类型是数值类型(numeric types)和returnAddress类型 ß 其值是java虚拟机指令的操作码的指针。它不是java语言类型。

#java虚拟机定义了一个具有平台指定的大小的抽象概念字(word),一个字的通常大小是主机平台的一个指针的大小。在一个32位平台上,字是32位,指针也是32.

#java虚拟机有一个所有线程间共享的堆(heap)。

<o:p> </o:p>

分享到:
评论

相关推荐

    深入理解Java虚拟机学习笔记借鉴.pdf

    Java 虚拟机(JVM)自动内存管理机制是 Java 语言的一大特色,它使得 Java 程序员无需手动管理内存,从而提高了开发效率和程序稳定性。JVM 自动内存管理机制主要通过 JVM 的内存模型来实现,它将 JVM 的内存在运行时...

    Java 虚拟机学习笔记:Java 内存区域,垃圾收集,内存分配与回收策略,JVM 调优,文件结构,类加载机制,Java 程序

    Java 虚拟机学习笔记: Java 内存区域, 垃圾收集, 内存分配与回收策略, JVM 调优, 文件结构, 类加载机制, Java 程序 Java是一种面向对象的编程语言,由Sun Microsystems于1995年推出。它是一种跨平台的语言,...

    java学习笔记3(java虚拟机)

    java学习笔记3(java虚拟机)java学习笔记3(java虚拟机)

    java虚拟机学习笔记进阶篇

    Java虚拟机(JVM)是Java程序的核心组成部分,它负责执行字节码并管理程序的内存。本篇文章将深入探讨Java虚拟机中的垃圾收集器(GC)及其对内存管理的影响。 1. 垃圾收集器的由来与作用 垃圾收集器的引入主要是...

    读书笔记:学习周志明先生的深入理解Java虚拟机的笔记.zip

    读书笔记:学习周志明先生的深入理解Java虚拟机的笔记

    学习笔记:深入浅出 Java 虚拟机.docx

    Java 虚拟机(JVM)是Java编程语言的核心组成部分,它允许Java代码在不同的操作系统上运行,实现了“一次编写,到处运行”的目标。JVM 是一个虚拟计算机,能够执行字节码(.class文件),这些字节码是Java源代码经过...

    深入理解Java虚拟机读书笔记之:第3章 安全(3)

    通过阅读《深入理解Java虚拟机》第三章,开发者不仅可以深入理解Java的安全机制,还能学习到如何在实际项目中实施这些安全策略,提升应用的安全性。对于想要从事Java开发或者对系统安全有深入了解需求的人来说,这一...

    深入Java虚拟机读书笔记1

    深入理解Java虚拟机,首先我们要明白Java虚拟机(JVM)的核心功能:它负责装载类文件,执行字节码,并管理内存。Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM...

    学习笔记之java虚拟机

    ### 学习笔记之Java虚拟机详解 #### 运行时数据区域概览 Java虚拟机(JVM)运行时数据区域主要包括以下几部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区以及运行时常量池。 1. **程序计数器**: -...

    java学习笔记4(java虚拟机)

    java学习笔记4(java多线程)java学习笔记4(java多线程)

    java学习笔记markdown

    【Java学习笔记Markdown版】是针对Java初学者和进阶者的一份详尽教程,以Markdown格式编写,便于阅读和整理。Markdown是一种轻量级的标记语言,它允许用户使用易读易写的纯文本格式编写文档,然后转换成结构化的HTML...

    深入理解Java虚拟机读书笔记之:第3章 安全(2)

    总的来说,"深入理解Java虚拟机读书笔记之:第3章 安全(2)"主要涵盖了Java安全体系的核心概念,包括类加载器、权限模型、安全管理器以及相关工具的使用。理解这些内容对于任何希望构建安全、可靠的Java应用程序的...

    Java学习笔记——良葛格

    Java以其“一次编写,到处运行”的特性赢得了全球程序员的喜爱,它的跨平台能力得益于Java虚拟机(JVM)。 接着,笔记会深入讲解Java的语法基础,如变量、数据类型、运算符、流程控制语句(如if、for、while)以及...

    学习深入理解Java虚拟机的前几章笔记

    ### 学习深入理解Java虚拟机的前几章笔记 #### JVM内存模型 Java虚拟机(JVM)的内存模型主要分为两大类:线程共享区和线程私有区。 ##### 线程共享区 - **堆**:是所有线程共享的内存区域,在这里存放着对象实例...

    深入Java虚拟机JVM类加载学习笔记

    ### 深入Java虚拟机JVM类加载学习笔记 #### 一、Classloader机制解析 在Java虚拟机(JVM)中,类加载器(ClassLoader)是负责将类的`.class`文件加载到内存中的重要组件。理解类加载器的工作原理对于深入掌握JVM以及...

    尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)学习笔记_NOTE_JVM.zip

    尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机)学习笔记_NOTE_JVM

    清华大学java学习笔记

    本资源是一个详细的 Java学习笔记,由清华大学编写,涵盖了 Java 语言的概述、发展史、工作原理、特点等多方面的知识点。 Java 语言概述 Java 语言是一种面向对象的编程语言,具有安全、跨平台、简单、适用于网络...

    JVM 学习笔记(Java虚拟机)

    **JVM学习笔记(Java虚拟机)** Java虚拟机(JVM)是Java语言的核心组成部分,它是Java程序运行的平台,负责解释和执行字节码。深入理解JVM对于优化Java应用程序性能至关重要。本笔记将从以下几个方面详细介绍JVM:...

    韩顺平编写的java学习笔记(全)

    ### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...

Global site tag (gtag.js) - Google Analytics