首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

深入JVM1(走近JVM)

2012-12-21 
深入JVM一(走近JVM)感觉JVM这个东西很深澳,网上也很少有这方面的资料,最近有兴趣就打算开始研究起来,做好

深入JVM一(走近JVM)
感觉JVM这个东西很深澳,网上也很少有这方面的资料,最近有兴趣就打算开始研究起来,做好笔记,以后回来再看。

注:实验的环境为:1.6.0_10-rc2


深入JVM1(走近JVM)

?

下面是JDK提供的帮助文档上一名话,我简单翻译了一下:

原文如下:


深入JVM1(走近JVM)

?

我的翻译:

1、JDK提供了一种或多种JVM的实现

下面我们针对JDK帮助文档上说的这2句话来做测试:

STEP1:

打开命令提示符,输入java【确保已经配置好环境变量】

?


深入JVM1(走近JVM)

大家请看红色框部分。当我们启动一个JAVA程序的时候,可以选择用Client和Server虚拟机。

OK,到这里大家对JVM的2种实现有基本了解,下面我们就写一个程序来试一试,分别让client和server这2个虚拟机来执行我们的程序:

第一步:

新建一个java文件,敲入以下代码:


第二步:

编译这个文件:

原文件:

深入JVM1(走近JVM)

编译:


深入JVM1(走近JVM)

第三步:用HotSpot?client?VM来执行上面的程序,如下图:


深入JVM1(走近JVM)

大家可以看到,结果正确的执行了。

第四步:用HotSpot?server?VM来执行上面的程序,如下图:


深入JVM1(走近JVM)

这个时候出现一个error,告诉我们没有server?JVM,这是由于什么原因呢,在下面的例子中,我会给大家解释,呵呵。

二、到底有几个JVM

我们自己写的一个JAVA程序运行的时候,到底是哪个JVM来为我们服务的?不知道大家有没有想过这个问题?系统中有几个JVM,他们之间有联系吗?还是系统只存在一个JVM,所有的程序都由这个JVM来执行。

要解决这个问题,我想要用到二个JAVA提供的工具。

在命令行敲入Jvisualvm:


深入JVM1(走近JVM)

会出现以下界面:


深入JVM1(走近JVM)

大家可以看到有一个local和remote选项,

Local:表示本地的JVM列表。

Remote:表示远程的JVM列表。

Snapshots:请看后方,本节不介绍。

如果你本地没有启动其它的JAVA应用程序,Local下面默认就只有一个JVM列表,(JVM)。这个就是当前运行Jvisualvm命令出来的窗口,这个程序本身也是JAVA语言写的。

双击这个JVM,会出现如下图所示:


深入JVM1(走近JVM)

我们改一下我们刚刚写的那个程序,代码如下:

再编译运行这个程序,注意观察VisualVM里的变化:

大家可以看到会多出一个正在运行的JVM。

总结:一个应用程序会对应一个JVM,当我们启动一个JAVA程序的时候,JDK会为我们分配一个JVM来执行程序。

?

提示:

在windows系统上,启动JvisualVm的时候可能会出现如下图所示错误:


深入JVM1(走近JVM)

?

大家可以点击这个链接,里面有关系错误的详细说明,出现这种情况可能有2种原因:

1、系统权限不够。

2、安装JDK的盘是fat格式的

?

?

如果你喜欢这个文档,你可以下载保存

热点排行