一、什么是虚拟机?什么是JAVA虚拟机?
虚拟机,简单说就是一台虚拟的计算机。 虚拟机主要分为系统层面的和应用程序层面的。系统层面的虚拟机,比如我们常用的 VMware、Visual-Box等,利用它们可以完成对物理计算机的仿真,提供一个完整的操作系统平台。应用程序层面的虚拟机,比如 java虚拟机(JVM),它为计算机应用程序提供运行平台,执行程序中的字节码指令。
二、简单的说下java虚拟机的原理
jvm内部有一个叫做类加载器的东西,它是用来在运行时根据需要加载类,这些类被加载到Java虚拟机内存中之后,虚拟机会读取并执行它里面存在的字节码指令。虚拟机中执行字节码指令的部分叫做执行引擎。Java虚拟机会进行自动内存管理。具体说来就是自动释放没有用的对象,而不需要程序员编写代码来释放分配的内存。这部分工作由垃圾收集系统负责。具体工作原理,后续我会跟大家一起学习分享。
三、Java虚拟机有那些分类?
Java发展至今,先后出现了不少java虚拟机。最初,是sun公司的Classic虚拟机,之后出现了BEA的JRockit,IBM的J9。目前在市场占绝对地位的还是 Hotspot虚拟机。
四、为什么到了要学java虚拟机的时候了?
本人工作3年多了,就目前我所了解到的coder包括我自己而言,大多数的我们只是知道java核心类库、第三方类库API的用法,专注于业务的实现,把我们的应用程序交给虚拟机自动执行和优化就好了。 然而这样会带来一个问题:我们根本不知道我们的程序是如何被java虚拟机执行的? 可能有人会有疑问,问什么要深入java虚拟机呢?我想说的是,外练筋骨皮,但更重要的是内练一口气。学习java虚拟机就是练气,学会或者看懂公式的推导,而不是一味的使用公式。为以后学习更深层次的java技术打好基础。
PS:目前打算从java虚拟机入手,后续更新学习Netty的源码解析、Spring的源码解析等。