Java体系结构:

l         Java程序设计语言

l         Java class文件格式

l         Java应用编程接口(API)

l         Java虚拟机

Java虚拟机的主要任务是装载class文件并执行其中的字节码,JVM包含一个类装载器(class loader),它可以从程序和API中装载class文件。Java API中只有程序执行时需要的那些类才会被装载。字节码由执行引擎来执行。

不同的Java虚拟机种,执行引擎可能实现得非常不同。在由软件实现的虚拟机种,最简单的执行引擎就是一次性解释字节码。另一种执行引擎更快,但是也更消耗内存,叫做“即时编译器”(just-in-time compiler)。在这种情况下,第一次被执行的字节码会被编译成本地机器代码。编译出的本地机器代码会被缓存,当方法以后被调用的时候可以重用。第三种执行引擎是自适应优化器。在这种方法里,JVM开始的时候解释字节码,但是会监视运行中程序的活动,并记录下使用最频繁的代码段。程序运行的时候,JVM只把那些活动最频繁的代码编译成本地代码,其他的代码由于使用得并不是很频繁,继续保留为字节码,由虚拟机继续解释他们。

深入Java虚拟机学习笔记相关推荐

  1. Java 虚拟机学习笔记 | 类加载过程和对象的创建流程

    前言 创建对象是 Java 语言绕不开的话题,那么对象是如何创建出来的呢?我们今天就来聊一聊.对象创建第一步就是检查类是否加载,而类的加载又牵扯到类的加载过程.如果单说对象的创建而绕开类的加载过程,感 ...

  2. Java虚拟机学习笔记(一)—Java虚拟机概述

    一:编程语言兼容底层系统的方式大概分为两种 1.通过编译器实现兼容 例如C.C++等编程语言,既能运行与Linux系统,也能运行与Windows系统:既能运行于x86平台,也能运行于AMD平台.这种能 ...

  3. 深入理解JAVA虚拟机学习笔记(一)JVM内存模型

    摘要:   上周末搬家后,家里的宽带一直没弄好,跟电信客服反映了N遍了终于约了个师傅明天早上来迁移宽带,可以结束一个多星期没网的痛苦日子了.这段时间也是各种忙,都一个星期没更新博客了,再不写之前那种状 ...

  4. Java 虚拟机学习笔记 | 运行时数据区总结

    前言 要想学习好 Java,Java虚拟(JVM)的学习是绕不开的.学习 Java虚拟(JVM)首先就要先了解的就是Java虚拟(JVM)运行时数据区. 在Java语言和虚拟机规范中对运行时数据区进行 ...

  5. 【深入理解Java虚拟机学习笔记】第三章 垃圾收集器与内存分配策略

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  6. 【深入理解Java虚拟机学习笔记】第二章 Java 内存区域与内存溢出异常

    最近想好好复习一下java虚拟机,我想通过深读 [理解Java虚拟机 jvm 高级特性与最佳实践] (作者 周志明) 并且通过写一些博客总结来将该书读薄读透,这里文章内容仅仅是个人阅读后简短总结,加强 ...

  7. java 准备 解析_深入理解JAVA虚拟机学习笔记24——类加载的准备和解析

    每天进步一点点! 今天我们一起看一下类加载的准备阶段和解析阶段. 先看一下准备阶段:主要任务是在方法区中为类变量(仅static修饰变量,不包含实例变量)分配内存并设置类变量初始化的阶段. 这里面的区 ...

  8. java outofmemory_深入理解JAVA虚拟机学习笔记3——OutOfMemoryError异常

    开门见山. 为了方便制造溢出,将JAVA堆的大小调整为10M. 本机用的是IntelliJ IDEA作为开发工具,进入到IDEA的安装目录,如D:\tools\IntelliJ IDEA 2017.1 ...

  9. java虚拟机学习笔记 【3】

    为什么80%的码农都做不了架构师?>>>    认识Java虚拟机的内部体系结构 Java虚拟机的内部体系结构也许很少有人去关心,因为对于Java程序员来说,一般只需要跟API打交道 ...

  10. Java虚拟机学习笔记(一)--运行时数据区域

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan 前言 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分成若干个不同的数据区域. 程 ...

最新文章

  1. 约等于全自动爬取CVE基础信息
  2. python多进程模板
  3. transforms函数查询
  4. python rs485_PySerial RS485读取
  5. 28条有关人工智能的名言,靠不靠谱你来看!
  6. amixer 如何切通道_三峡工程如何突破技术难题?
  7. 1.21 Pattern类和Matcher类的使用
  8. codeforces 数论分析题
  9. java转日期_Java时间日期格式转换
  10. 系统架构设计师 - 23种设计模式(GOF)
  11. php三级实例,三级联动实例
  12. webstorm编辑器,Ctrl+Alt+L格式化JS代码或格式化Vue代码后,单引号变成双引号,以及添加分号设置问题
  13. Python 多线程总结
  14. MQ监听 linux,RabbitMQ的安装,配置,监控
  15. 机器学习实战(一)k-近邻kNN(k-Nearest Neighbor)
  16. PHP 连接MySQL数据库
  17. Vue工程引入openlayers组件的方法
  18. pd 生成mysql数据库sql时加上备注
  19. W5500EVB从网络上获取标准时间
  20. 金额小写转大写 java_JAVA 小写金额转换大写金额

热门文章

  1. 毫米波雷达的系统设计细节(1) - 从雷达方程到雷达威力图
  2. AbstractHandlerMapping$PreFlightHandler can‘t be cast to springframework.web.method.HandlerMethod
  3. HandlerMethodReturnValueHandler处理返回值问题,aop
  4. Vue Router路由守卫
  5. [青少年CTF]Misc—Easy by 周末
  6. 2.MySQL索引优化
  7. C#-串口-模拟量采集软件-1
  8. 数据结构 笔记:图的遍历(BFS)
  9. 单片机蜂鸣器音乐播放
  10. MySQL之分库分表