初识JVM


初识JVM

1.什么是JVM?

JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机

JVM本质上是一个运行在计算机上的程序,他的负责运行Java编译后生成的Java字节码文件,将这些字节码文件转换成计算机能识别的机器码

JVM的功能:

  1. 解释和运行
    • 对字节码文件中的指令,实时的解释成机器码,让计算机能够直接执行
  2. 内存管理
    • 自动为对象、方法等分配内存
    • 自动的垃圾回收机制,回收不再使用的对象
  3. 即时编译
    • 对热点代码进行优化,提升执行效率

2.即时编译

Java语言如果不做任何优化,性能是远远不如C/C++的。因为Java代码再编译后生成的class文件是不能直接让计算机运行的,还需要让JVM将字节码装换成对应的机器码,而C/C++是直接通过编译和链接将源代码转换为机器码。所以Java的性能是不如C/C++的。

Java语言需要进行实时的解释字节码,主要是因为夸平台的特性,让同一个字节码通过不同的JVM在不同的操作系统上运行。

在这里插入图片描述

而通过JVM即时编译这个功能就能在一定程度上提供代码的性能。即时编译的原理就是:

JVM在解释字节码的时候,发现有一段代码在短时间内别多次调用,他就会认为这一段代码是热点代码,就会这一段代码进行解释并优化,把这段热点字节码转换成机器码后,将其存放到内存中。后续程序直接从内存中调用就可以了,而不用JVM再进行解释后再调用。这就是即时编译优化。

3. JVM的组成

在这里插入图片描述

  • 类加载器:加载.class字节码文件中的内容到内存中
  • 运行时数据区域:负责管理JVM使用到的内存,比如创建对象和销毁对象
  • 执行引擎:将字节码文件中的指令解释成机器码,同时用即时编译器优化性能
  • 本地接口:调用JVM内部实现的native方法,也是C/C++实现的方法

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
内容简介 本书主要是冲着实际应用而来的,共分11章。在刚开始的第一章就详细地讲解了Java开发环境的搭建、反编译工具的使用、JDK文档资料的查阅,Java程序的编译、运行过程。在第二章中,全面地讲解Java的基本语法知识,对基本语法的讲解也不是泛泛而谈,而是在其中贯穿各种实际应用中的巧妙用法和注意事项。在第三章和第四章中,透彻系统地讲解了面向对象的思想和应用。在以后的章节中,用通俗易懂的手法,紧密联系实际应用的方式,深入浅出地讲解了多线程,常用Java类,Java中的I/O(输入输出)编程,GUI与Applet,网络编程等方面的知识。 本书许多内容都来源于程序员圈子里的非正式交流,或源于某些成功的案例与作者的经验、心得,但这些东西对新手来说,是很难自学到的。作者从事了多年的软件开发和培训教学,非常清楚那些容易使新手困惑的问题,在学习过程中会碰到的拦路虎,作者结合了多年实际开发与教学经验,收集了众多学员在学习中常提到的问题,对平时讲课的内容进行了精心整理。读者从本书中不仅可以学习到Java本身方面的知识,还能学到了许多编程思想和实际操作手法,仿佛老手就在你面前进行现场演示一样。本书不仅全面的介绍了Java语言本身,最重要还交会读者去掌握编程思想,找到编程感觉,而不是死记硬背语言本身,书中涉及到的应用问题分析,远远超了一个Java程序员在学习和应用Java过程中所有可能碰到的问题。 本书不仅讲概念,讲怎么做,还告诉读者为什么;不仅讲操作技能,还贯穿一些系统的理论,这样读者才不至于不明不白,或是似乎明白,但不知道具体该怎么干。本书一步步引导读者深入,使读者轻松愉快、兴趣盎然、水到渠成、潜移默化地掌握Java编程及许多其他的软件开发思想。 本书语言流畅,内容翔实,分析透彻,是一本适合广大计算机编程爱好者的优秀读物。本书结构合理,图文并茂,实用性强,适合于广大有经验的开发人员来迅速转换到Java语言,对广大初学计算机编程语言的爱好者来说,这本书就是非常好的切入点。本书基本理论知识完备,又紧密联系实际开发,也非常适合作为大专院校师生的教学与学习用书,将给广大师生带来一种革命性的教学方式与学习思路,令人耳目一新。 这不是一本参考资料和Java百科全书,不是什么"宝典"和"大全",但却可以让新手变为老手,相信学完此书,再看任何以前看不懂的Java书都会显得非常轻松。即使是很有经验的老手,也能从本书中有巨大收益。如果你想非常轻松就精通Java编程,并期望学完便能参加实际的开发工作,本书就是你非常好的一个选择。 目录: 第1章 Java开发前奏 1.1 Java虚拟机及Java的跨平台原理 1.2 Java开发环境的搭建 1.3 体验Java编程的过程 1.4 classpath的设置 1.5 有效利用Java的文档帮助 1.6 JVM(虚拟机)的运行过程 1.7 垃圾回收器 1.8 反编译工具的介绍 第2章 Java编程基础 2.1 Java基本语法格式 2.2 变量及变量的作用域 2.3 函数与函数的重载 2.4 Java中的运算符 2.5 程序的流程控制 2.6 数组 第3章 面向对象(上) 3.1 面向对象的概念 3.2 类与对象 3.3 构造函数 3.4 this引用句柄 3.5 与垃圾回收有关的知识 3.6 函数的参数传递 3.7 Static关键字 3.8 内部类 3.9 使用Java的文档注释 第4章 面向对象(下) 4.1 类的继承 4.2 抽象类与接口 4.3 对象的多态性 4.4 异常 4.5 包 4.6 访问控制 4.7 使用jar文件 第5章 多线程 5.1 如何创建与理解线程 5.2 多线程的同步 5.3 线程间的通信 5.4 线程生命的控制 第6章 Java API 6.1 理解API的概念 6.2 工具软件的介绍与使用 6.3 String类和StringBuffer类 6.4 基本数据类型的对象包装类 6.5 集合类 6.6 Hashtable与Properties类 6.7 System类与Runtime类 6.8 Date与Calendar,DateFormat类 6.9 Math与Random类 6.10 学习API的方法 第7章 IO/输入输出 7.1 File类 7.2 RandomAccessFile类 7.3 节点流 7.4 过滤流与包装类 7.5 IO中的高级应用 第8章 图形用户界面GUI(一) 8.1 初识AWT 8.2 AWT线程 8.3 AWT事件处理 8.4 GUI组件上的图形操作 第9章 图形用户界面GUI(二) 9.1 常用AWT组件 9.2 布局管理器 9.3 Swing 第10章 Applet 10.1 浏览器怎样显示网页 10.2 浏览器处理网页脚本代码的过程 10.3 浏览器怎么处理Applet 10.4 Applet类及其方法 10.5 一个显示动画的Applet的程序 10.6 关于Java的一些细节 10.7 验证Applet对象在客户端如何存在 第11章 网络编程 11.1 网络编程的基础知识 11.2 Java编写UDP网络程序 11.3 Java编写TCP网络程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱敲代码的三毛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值