一、走近JVM
感觉JVM
这个东西很深澳,网上也很少有这方面的资料,最近有兴趣就打算开始研究起来,做好笔记,以后回来再看。
注:实验的环境为:1.6.0_10-rc2
下面是
JDK提供的帮助文档上一名话,我简单翻译了一下:
原文如下:
我的翻译:
1、
JDK提供了一种或多种
JVM
的实现
l
JAVA HotSpot Client VM
2
JAVA HotSpot Server VM
下面我们针对JDK
帮助文档上说的这
2
句话来做测试:
STEP1:
打开命令提示符,输入java
【确保已经配置好环境变量】
大家请看红色框部分。当我们启动一个JAVA
程序的时候,可以选择用
Client
和
Server
虚拟机。
OK,到这里大家对
JVM
的
2
种实现有基本了解,下面我们就写一个程序来试一试,分别让
client
和
server
这
2
个虚拟机来执行我们的程序:
第一步:
新建一个java
文件,敲入以下代码:
public class JVMTest
{
public static void main(String args[])
{
System.out.println("Hello JVM");
}
}
第二步:
编译这个文件:
原文件:
编译:
第三步:用HotSpot client VM
来执行上面的程序,如下图:
大家可以看到,结果正确的执行了。
第四步:用
HotSpot server VM来执行上面的程序,如下图:
这个时候出现一个
error,告诉我们没有
server JVM,
这是由于什么原因呢,在下面的例子中,我会给大家解释,呵呵。
二、
到底有几个JVM
我们自己写的一个JAVA
程序运行的时候,到底是哪个
JVM
来为我们服务的?不知道大家有没有想过这个问题?系统中有几个
JVM
,他们之间有联系吗?还是系统只存在一个
JVM
,所有的程序都由这个
JVM
来执行。
要解决这个问题,我想要用到二个JAVA
提供的工具。
l
Jvisualvm
在命令行敲入Jvisualvm
:
会出现以下界面:
大家可以看到有一个
local和
remote
选项,
Local:表示本地的
JVM
列表。
Remote:表示远程的
JVM
列表。
Snapshots:请看后方,本节不介绍。
如果你本地没有启动其它的JAVA
应用程序,
Local
下面默认就只有一个
JVM
列表,(
JVM
)。这个就是当前运行
Jvisualvm
命令出来的窗口,这个程序本身也是
JAVA
语言写的。
双击这个JVM
,会出现如下图所示:
我们改一下我们刚刚写的那个程序,代码如下:
public class JVMTest
{
public static void main(String args[])
{
for(int i=0;i<Integer.MAX_VALUE;i++)
{
System.out.println("Hello JVM");
}
}
}
再编译运行这个程序,
注意观察
VisualVM
里的变化:
大家可以看到会多出一个正在运行的JVM
。
总结:一个应用程序会对应一个JVM
,当我们启动一个
JAVA
程序的时候,
JDK
会为我们分配一个
JVM
来执行程序。
提示:
在windows
系统上,启动
JvisualVm
的时候可能会出现如下图所示错误:
大家可以点击这个链接,里面有关系错误的详细说明,出现这种情况可能有2
种原因:
1、系统权限不够。
2、安装
JDK
的盘是
fat
格式的
|
如果你喜欢这个文档,你可以下载保存
- 大小: 4.3 KB
- 大小: 45 KB
- 大小: 3.6 KB
- 大小: 4.8 KB
- 大小: 6.2 KB
- 大小: 1.4 KB
- 大小: 9.7 KB
- 大小: 879 Bytes
- 大小: 131.3 KB
- 大小: 139.8 KB
- 大小: 11.9 KB
分享到:
相关推荐
### 深入JVM内核:原理、诊断与优化 #### 一、JVM基础知识 **1.1 JVM概念** Java虚拟机(Java Virtual Machine,简称JVM)是一种用于执行Java字节码的虚拟机。它为Java程序提供了一个运行环境,能够独立于硬件平台...
总结起来,深入理解JVM内核,熟练掌握诊断技巧,并合理调整JVM配置参数,是每一个Java开发者必备的技能。通过本教程的学习,你将能够运用这些知识有效地提升应用性能,解决实际工作中的各种挑战。
《深入JVM内核—原理、诊断与优化》是一份深度探索Java虚拟机(JVM)的视频教程,旨在帮助开发者全面理解JVM的工作机制,掌握性能诊断技巧,并能进行有效的优化。本教程覆盖了从基础到高级的JVM主题,不仅适用于Java...
在深入理解JVM内核的运行机制时,我们需要关注以下几个关键点: 1. **类加载机制**:JVM通过类加载器将类文件加载到内存中。加载过程包括加载、验证、准备、解析和初始化五个阶段。类加载器主要有Bootstrap ...
1、java虚拟机的基本介绍。 2、字节码的执行 3、常用的jvm参数配置 4、算法和种类 5、gc参数配置 6、类加载器 7、性能监控工具 8、jvm堆栈分析
本书讲述了Java虚拟机一运行 所有Java程序的抽象计算机,还讲了几种与虚拟机密切相关的核心Java API。本书通过分析讲解、可运行的示例、参考资料和applet (它作为文中所述概念的交互式例示),提供了Java技术的深人...
[jvm]深入JVM(一):从"abc"=="abc"看java的连接过程收藏 一般说来,我不关注java底层的东西,这次是一个朋友问到了,注意不光是 System.out.println("abc"=="abc");返回true, System.out.println(("a"+"b"+"c")....
每个使用Java的开发者都知道Java字节码是在JRE中运行,而JVM则是JRE中的核心组成部分,承担分析和执行Java字节码的工作,而Java程序员通常并不需要深入了解JVM运行情况就可以开发出大型应用和类库。尽管如此,如果你...
《深入理解JVM & G1 GC》一书深入剖析了Java虚拟机(JVM)的工作原理,特别是针对垃圾收集器(GC)中的G1(Garbage-First)算法进行了详尽的探讨。JVM是Java程序运行的基础,它负责解析、编译、执行Java代码,并管理...
标题提到的“深入理解JVM虚拟机”,意味着要对JVM的内部机制进行深入的研究和理解。其核心知识点涵盖了如下几个方面: 1. JVM架构组成:JVM主要由类加载器(Class Loader)、运行时数据区(Runtime Data Area)、...
深入JVM概要 JVM详解 本文将详细介绍Java虚拟机(JVM)的内部机理和实现原理,从类型的生命周期、方法区、常量池、类加载器、垃圾收集器、栈和局部变量等方面对JVM进行深入解析。 类型的生命周期 类型的生命周期...
方法区是JVM规范中的一部分,不同虚拟机实现时方法区的具体内容和管理方式可能会有所不同。 #### 运行时常量池 运行时常量池是方法区的一部分,它存放编译期生成的各种字面量和符号引用,并在类加载后被存放至方法...
### 深入JVM内核—原理、诊断与优化 #### 一、JVM基础知识 ##### 1.1 JVM概念 Java虚拟机(Java Virtual Machine,简称JVM)是运行Java字节码的虚拟机环境。它为Java程序提供了一个独立于硬件平台的抽象计算机环境...
### 深入理解JVM #### 一、Java技术与Java虚拟机 Java不仅仅是一种编程语言,更是一项综合性的技术。它主要包括四个关键组成部分: 1. **Java编程语言**:这是一种面向对象的编程语言,提供了丰富的类库支持,...
JVM的指令集包括约248个字节码,每个字节码对应一种运算,如加载和存储变量、算术运算、控制流程、对象创建和方法调用等。JVM通过解释器将字节码转化为机器码执行,或者使用即时编译器(JIT)将热点代码编译为更高效...
根据提供的文件信息,“圣思园张龙 深入理解jvm”,我们可以推断出这份资料主要关注于Java虚拟机(JVM)的深入理解和实践应用。JVM是Java开发环境中非常核心的一个组成部分,它不仅为Java程序提供了运行时环境,还负责...
### 深入理解JVM:Java虚拟机详解 #### 1、Java与JVM介绍 **JVM**,即Java Virtual Machine(Java虚拟机),是用于计算设备的一种规范,它是一个通过在实际计算机上仿真模拟各种计算机功能来实现的虚拟计算机。...
第一课 初识JVM JVM分类 Java语言规范 JVM规范 介绍JVM的基本知识和发展历史,并介绍了Java语言规范和JVM规范。 第二课 JVM运行机制简介 堆、栈、方法区等 JVM启动流程 内存模型和volatile实例 解释和编译运行的...