① java虚拟机参数hotspot什么意思
只是 Sun 公司的 Java 虚拟机的产品代号。
第一次出现 hotspot 时它确实带来一种的新的技术实现方式,让 JVM 性能和安全性提升很多,那是在遥远的 20 世纪末。
② Zing jvm跟oracle jvm具体有哪些区别,为什么收费那么高
Zing jvm是Azul传统风格的产品,他在hotsopt vm上做了不少的定制以及优化工作。
主打低延迟、高实时服务器端JDK市场。它以Sun的HotSpot VM为基础,改进了许多会影响延迟的细节。最大的三个卖点是:(1) 低延迟、“无暂停”(pauseless)的C4 GC,GC带来的暂停可以控制在10ms以下的级别,支持的Java堆大小可以到1TB;(2) 启动后快速预热功能,“ReadyNow!”;(3) 可管理性:零开销、可在生产环境全时开启的、整合在JVM内的监控工具Zing Vision。Zing(外加Zing System Tools)是一个纯软件解决方案,可以运行在Linux/x86-64平台上。
③ OpenJDK和OracleJDK的JVM性能有多大差距
首先要先明确OpenJDK和Sun/OracleJDK之间,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等项目之间是什么关系,这有助于确定接下来编译要使用的JDK版本和源码分支。
从前面介绍的Java发展史中我们了解到OpenJDK是Sun在2006年末把Java开源而形成的项目,这里的“开源”是通常意义上的源码开放形式,即源码是可被复用的,例如IcedTea、UltraViolet都是从OpenJDK源码衍生出的发行版。但如果仅从“开源”字面意义(开放可阅读的源码)上看,其实Sun自JDK 1.5之后就开始以Java Research License(JRL)的形式公布过Java源码,主要用于研究人员阅读(JRL许可证的开放源码至JDK 1.6 Update 23为止)。把这些JRL许可证形式的Sun/OracleJDK源码和对应版本的OpenJDK源码进行比较,发现除了文件头的版权注释之外,其余代码基本上都是相同的,只有字体渲染部分存在一点差异,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。
Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。

④ JVM和Java HotSpot如何区分版本
你的虚拟机(JVM)版本是23.5-b02
java -version出来信息包含两部分:Java软件包发行版本信息和内核(JVM)版本信息。
java的发行包包含三种类型Java ME,Java SE,Java EE,发行包就相当于对外销售的产品包,不同发行包会删减部分特性,因此版本信息首先显示发行包类型和版本。
JVM是Java平台的基础和核心,一般在一个java大版本中JVM版本变化都是比较小的。HotSpot是一种JVM实现技术,相对以往的方式在性能和扩展能力上得到了很大的提升,因此它不是一个独立产品,可以理解Sun(Oracle)实现的JVM版本的品牌商标。
⑤ 关于jdk里面的jvm的源码位置问题
jvm就是执行.class的机制。源码估计想多了。每个平台jvm都不一样,但执行.class运行结果一样(大部分是,小部分还要改.java适配)
⑥ JVM具体在哪个文件夹下的
\jdk1.6.0 -- JDK的根目录,包含一些软件版权,声明,和自述文件,
同时包含归档了的Java平台源代码包src.zip
\jdk1.6.0\bin -- JDK包含的一些开发工具执行文件
\jdk1.6.0\jre\bin\client
包含 Java HotSpotTM Client Virtual Machine 要用的 DLL 文件
\jdk1.6.0\jre\bin\server
包含 Java HotSpotTM Server Virtual Machine 要用的 DLL 文件
\jdk1.6.0\lib -- Java开发工具要用的一些库文件,有包含了支持JDK工具的非核心类库tool.jar,
dt.jar 归档的 BeanInfo 文件
用于告诉IDE这样显示java组件怎样让开发者在自己的应用程序中用户化它们
\jdk1.6.0\jre -- JDK使用的Java运行环境(JRE)的根目录,这个运行环境实现了Java平台
\jdk1.6.0\jre\bin -- Java平台所要用的工具和库的可执行文件
这些可执行文件和 /jdk1.6.0/bin相同的。
//Java 启动器工具充当了应用程序启动器(覆盖了1.1版本的JDK推出的旧版本JRE工具)
这个路径不需要设置 PATH 环境变量
\jdk1.6.0\jre\bin\client -- 包含Java Hotspot(Java性能引擎) 客户虚拟机要用的DLL文件
\jdk1.6.0\jre\bin\server -- 包含Java Hotspot(Java性能引擎) 服务器虚拟机要用的DLL文件
\jdk1.6.0\jre\lib -- JRE要用的代码库,属性设置,资源文件。
例如rt.jar Java 引导类库(java 核心APIRunTime类)
charsets.jar 字符转换类库
\jdk1.6.0\jre\lib\ext -- 默认的Java平台扩展安装环境
包含localedata.jar 是 ava.text 和 java.util包要用到的地区数据
\jdk1.6.0\jre\lib\security -- 包含安全管理文件,有安全规则(java.policy)
和安全属性文件(java.security)
\jdk1.6.0\jre\lib\applet -- Java applets 要的Jar包,可以放到lib/applet/目录,
这样可以节省 applet 类装载器从本地文件系统装载 大的applets 所需的applet类时间
减少从网上下载具有相同的保护的时间。
\jdk1.6.0\jre\lib\fonts 包含平台所需的TrueType字体文件
⑦ 什么是HotSpot VM amp;深入理解Java虚拟机 JVM
什么是HotSpot VM amp;深入理解Java虚拟机 JVM
HotSpot VM既继承了Sun之前两款商用虚拟机的优点(如前面提到的准确式内存管理),也有许多自己新的技术优势,
如它名称中的HotSpot指的就是它的热点代码探测技术(其实两个VM基本上是同时期的独立产品,HotSpot还稍早一些,HotSpot一开始就是准确式GC,
而Exact VM之中也有与HotSpot几乎一样的热点探测。
⑧ HotSpot JVM支持哪些垃圾收集器
按线程
单线程:Serial、SerialOld
多线程:ParNew、Parallel Scavenge、Parallel Old、CMS、G1
按适用代
新生代: Serial、ParNew、Parallel Scavenge
老年代: SerialOld、CMS 、Parallel Old
G1可以在新生代和老年代使用
常见的组合
ParNew+CMS
Parallel Scavenge+Parallel Old
⑨ java的jvm的作用是提供一个可以让class文件运行的环境还是把class文件转换常机器码文件呢
jvm的其中之一作用便是你说的执行class文件。而jvm中,执行class文件有两种方式,一种是传统的解释型,即一边翻译一边执行,翻译一句话成本地指令之后马上执行,然后回头再翻译下一句话,再执行下一句话,这是传统方式,从这里就可以知道为什么大家都叫java为解释型的语言了吧。第二种方式就是你说的,jvm中利用jit进行对class文件二次编译,这次编译就会直接编译成系统本地指令,这样再去运行的时候就快了吧,但是一开始的jit是比较弱智的,他会将你所有class代码都统统在运行时编译成本地指令,大家知道编译是非常耗时的啊,这种运行时编译和c++的静态编译不同,c++是在系统运行之前,就已经将所有的代码都编译成本地代码了,所有在运行时候是没有编译损耗的,运行时编译也叫做即时编译,这两种编译方式有好有坏,静态编译运行速度快,但是无法做到跨平台,运行时编译可跨平台,但是运行速度慢,所以到后来sun推出hotspot,出现了动态编译,即不是将所有代码都编译成本地指令了,而是将你系统常常运行的那块代码编译成指令而已。所以最后总结下,jvm的excution engine对待class的处理有两种方式,一种是解释执行,一种是动态即时编译执行。
⑩ JVM版本,用java -version看,见下图,这是显示我有两个JVM吗
直答:
一个JVM, 版本是1.8
详细如下:
显示的信息依次是
java版本(也就是通常我们说的jvm版本)
java运行环境版本
JIT编译环境
(JIT说明)
Java HotSpot是一个混合模式的虚拟机,也就是说它既可以解释字节码,又可以将代码编译为本地机器码以更快的执行。通过配置-XX:+PrintCompilation参数,你可以在log文件中看到方法被JIT编译时的信息。JIT编译发生在运行时 —— 方法经过多次运行之后。到方法需要使用到的时候,HotSpot VM会决定如何优化这些代码。
补充,
JIT就是提升编译性能的. 初学时候不必在意,
等向高级发展的时候, 你可以看JVM内幕类的书.
关于JIT可以推荐书《深入理解Java虚拟机》