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

自己动手写Java虚拟机 笔记

    博客分类:
  • java
 
阅读更多

1、java = jvm + 库

2、jvm = 数据类型+内存管理和GC+指令解析+函数调用+多线程+JIT

3、数据类型= 原子类型 + 引用 + 数组

4、动态运行:栈 = PC + 线程栈

每一帧 = 一个调用深度= 局部变量表+操作数栈

5、一个指令执行的例子:

public static float circumference(float r)

{

float pi = 3.14f;

float area = 2 * pi * r;

return area;

}

字节码如下:

00 ldc #4    栈顶 3.14

02 fstore_1  局部数据区 pi

03 fconst_2  栈顶 

04 fload_1局部数据区--》栈顶

05 fmul弹出栈2个数据,结果压栈

06 fload_00号变量(传入的参数r)压栈

07 fmul弹出并运算

08 fstore_2存入area

09 fload_2局部--》栈顶

10 return弹出传给调用者

 

6、类(Class)和对象(Object)

1》Class= 常量池+(static)域、方法、实例或类变量占空间大小

2》Method=操作数栈和局部变量表大小,方法字节码数组

3》常量池:字面量、字符串引用

4》指令 new putstatic和getstatic;putfield和getfield;instanceof和checkcast;ldc

5》runtime需要维护所有的Class和所有的Object

 

7、方法调用

invokestatic invokespecial包括构造函数、私有方法和通过super

关键字调用的超类方法。

invokeinterface invokevirtual

invokedynamic 

XXreturn

核心是找到字符串对应的方法区,之后进行解释执行

8、数组的实现

1》数组类由Java虚拟机在运行时生成。数组的类名是左方括号([)+数组元素的类型描述符;数组的类型描述符就是类名本身。例如,int[]的类名是[I,int[][]的类名是[[I,Object[]的类名是[Ljava/lang/Object;,String[][]的类名是[[java/lang/String等等。

2》指令

newarray

anewarray

multianewarray

XXaload和XXastore

arraylength

9、库

1》JNI: 注册和调用本地函数 

2》异常:需要native记录java调用栈的信息

3》Main之前的初始化(System类的native初始化)

 

分享到:
评论

相关推荐

    18天java笔记(txt版)

    15. **Java虚拟机(JVM)**:了解JVM的工作原理,如类加载、内存管理和垃圾回收,有助于优化程序性能。 这份18天的Java笔记涵盖了这些核心概念,通过逐天学习,你可以逐步构建起对Java语言的全面理解。每章节都可能...

    java学习笔记

    Java程序需要在Java虚拟机(JVM)上运行,这意味着只要有相应平台的JVM,Java程序便可以在不同的操作系统上执行。 在开发步骤方面,笔记介绍了编写源文件(.java)、编译源文件为字节码文件(.class)以及在虚拟机...

    Java Studty.rar_Java笔记_java基础学习

    10. **JVM和内存管理**:了解Java虚拟机(JVM)的工作原理,包括类加载、内存区域(堆、栈、方法区等)以及垃圾回收机制,对于优化程序性能和避免内存泄漏至关重要。 通过"Java Studty.rar"中的资料,初学者可以...

    高级java笔试题-Java-Note:一个Java程序员的笔记本

    高级java笔试题 ...自己动手写Java虚拟机,张秀宏 Spring 技术内幕:深入解析 Spring架构与设计原理(第2版) 数据库 MySQL技术内幕:Innodb 存储引擎第二版,姜承尧 Redis 设计与实现 操作系统: Linux 私

    java\CoreJava笔记\CoreJAVA_day01

    - 夸平台性:通过Java虚拟机(JVM),Java程序可以在不同的操作系统上运行,实现"Write Once, Run Anywhere"。 - 内存管理:Java自动进行内存管理,包括垃圾回收机制(GC),程序员无需手动释放内存。 - 代码安全...

    java面试笔记,可以帮助你成功踏入公司

    10. **JVM**:了解Java虚拟机的工作原理,包括类加载机制、内存区域、垃圾收集算法和调优策略。 11. **网络编程**:理解TCP/IP协议,了解Socket编程,能够编写简单的网络通信程序。 12. **数据库操作**:熟悉SQL...

    java暑期学习笔记呀呀呀呀呀呀

    Java的设计目标是“一次编写,到处运行”(Write Once, Run Anywhere),这得益于它的Java虚拟机(JVM)技术。本学习笔记主要针对Java初学者,旨在帮助他们理解和掌握Java编程的基础知识,以及如何解决编程过程中...

    Java基础自学笔记,全部的基础和心得

    Java的运行环境是Java虚拟机(JVM),这使得Java程序可以在任何安装了JVM的系统上执行。 二、Java环境搭建 学习Java首先需要安装Java Development Kit(JDK)。JDK包含Java编译器(javac)、Java运行工具(java)...

    Java JDK 7学习笔记

    JVM(Java虚拟机)是运行Java字节码的平台,JRE(Java运行时环境)包括JVM和Java核心类库,而JDK(Java开发工具包)则是包含JRE和开发工具的集合。JDK是编程人员用来开发Java程序的工具集合,JRE是运行Java程序的...

    韩顺平.循序渐进学.java.从入门到精通完整版PPT完整版笔记代码

    它的跨平台特性(Write Once, Run Anywhere)得益于Java虚拟机(JVM),使得Java代码能在任何支持JVM的设备上运行。 该资源包的核心部分是韩顺平老师的PPT教程,它通常会涵盖以下几个关键章节: 1. **Java基础**:...

    《跟我学Java26日通》随堂笔记 java教学课件

    10. **Java虚拟机(JVM)**:了解JVM的工作原理,包括类加载、内存管理(堆、栈、方法区等)、垃圾回收等,有助于优化程序性能。 11. **Java Swing与JavaFX**:这两是Java的图形用户界面(GUI)开发库,提供丰富的...

    java零基础学习笔记

    它的设计哲学是“一次编写,到处运行”,这意味着编写的代码可以在不同的平台上运行,无需重新编译,这得益于Java虚拟机(JVM)。 在Java基础部分,你将学习到以下关键知识点: 1. **环境配置**:安装Java ...

    java学习课件,包含了Java语言的基本结构,数据等,很详细

    Java的源代码以`.java`为扩展名,编译后生成`.class`字节码文件,由Java虚拟机(JVM)执行。 在数据方面,Java提供了多种数据类型,包括基本类型(如整型int、浮点型float、字符型char等)和引用类型(如类、接口...

    上海大学 Java ppt

    Java源代码首先被编译成字节码,然后由Java虚拟机(JVM)解释执行。这种设计使得Java程序可以在任何支持Java的平台上运行,无需针对特定平台进行重新编译。 【Java平台】 Java平台由Java虚拟机(JVM)和Java应用...

    语言程序设计资料:Java语言程序设计.ppt

    在学习方法上,强调实践和理解,鼓励学生少做笔记,更多地倾听、思考和动手实践。课程考核方式结合了平时表现和期末考试,书面考试与上机实验相辅相成,确保学生不仅理论知识扎实,也具备实际操作能力。 课程内容...

    Java语言程序设计

    课程的学习方法强调实践,鼓励学生多听、多动手,而不是仅仅做笔记。考试会综合考虑平时成绩和上机实验表现,确保学生不仅理解理论知识,还能实际操作。 通过深入学习Java语言程序设计,学生不仅可以掌握编程基础,...

    java简明教程

    学习Java时,建议采用实践为主的方法,少做笔记,多听讲,多动手实践。课程考核通常结合平时表现和考试,书面考试与上机实验并重。对于初学者,理解Java的技术基础,掌握Java程序的编写、编译和运行流程,以及如何...

    第一讲 Java基础知识.ppt

    Java平台的核心是Java虚拟机(JVM),它允许Java程序在任何支持JVM的设备上运行,无需重新编译。Java API是Java平台的重要组成部分,包含了大量的类库,为开发者提供了构建图形用户界面、网络通信、数据库连接等功能...

    03_关于互联网Java工程师面试突击训练课程的几点说明.zip

    2. **JVM**:理解Java虚拟机的工作原理,如类加载机制、内存模型(堆、栈、方法区等)、垃圾回收机制、性能优化策略等。 3. **设计模式**:单例、工厂、观察者、装饰器、代理、适配器等常见设计模式的使用场景和...

    2024最新版Java基础视频教程包括基础详解+笔记+源码+课后练习

    Java虚拟机(JVM)是JRE的一部分,它负责执行字节码。 标准类库是Java的一个重要特点,它提供了大量的预定义类和接口,用来执行各种常见任务,如输入/输出(I/O)、字符串处理、数据结构、网络编程和并发编程。学习...

Global site tag (gtag.js) - Google Analytics