JVM百问百答电子书节选

转载请注明出处,感谢大家的支持!
本文来自优优码:http://www.uucode.net/201503/jvmqa

声明1根据JVM群397196583整理的常见问题,答案经过群主验证,喜欢JVM的同学可加群交流。

声明2问题一直在持续整理中….也欢迎大家来群里补充说明,加群可下载完整版。

1、JDK-JRE-JVM之间的关系

(1)JDK是JAVA的核心,包括JRE(JAVA 运行环境)、编译器等,它是Java的开发工具包。JDK的主流产品是由SUN公司开发的,JDK本身是用JAVA编写的,也包含部分底层C/C++代码,安装包的SRC.ZIP就是JDK的源码。

(2)JVM(JAVA虚拟机),是可以运行JAVA代码的假想计算机,主要任务是把JAVA字节码编译成特定计算机的机器指令,是JAVA实现“一次运行,处处运行”的关键。

(3)JRE是JAVA运行环境,包括JVM、JAVA平台核心类和支持文件,如果只是运行JAVA程序的话,可以下载JRE就可以了,如果要开发的话,就要下JDK了。

 

JAVA运行顺序,先编写JAVA程序块,然后通过JDK的编译器把JAVA程序编译成字节码生成class文件,然后通过JVM运行。

 

2、Eclipse提示JVM版本太低了,咋办?

JVM是被JRE版本限制的。可以检查两处:

1、java -version命令查看当前jvm版本。

2、检查你的JAVA_HOME、CLASSPATH、PATH环境变量是否使用了新版本的JDK。

 

3、如何增加JVM内存?

JAVA虚拟机内存容量要根据你机器的实际内存容量来分配的,如果你用Eclipse来处理的话,可以尝试修改Eclipse配置设置,即eclipse.ini配置文件:Dosgi.requiredJavaVersion=1.5

-Xms40m

-Xmx256m,将Xmx改为512m或者更大,如果改了过后,打不开Eclipse的话,则说明系统内存不够。

 

4、系统时间和JVM的Date时间不一致?

造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。

你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置:  -Dfile.encoding=UTF8     -Duser.timezone=GMT+08

 

5、怎么给JVM加启动参数?

在tomcat的bin目录里增加setenv.bat

set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx712m -XX:MaxPermSize=128m

 

6、JVM启动时的有哪三个类加载器?

当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:

l  bootstrap classloader

l  extension classloader

l  system classloader

7、JVM的启动步骤是什么 ?

JVM工作原理和特点主要是指操作系统装入JVM,是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境.

 

  1. 创建JVM装载环境和配置
  2. 装载JVM.dll
  3. 初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例
  4. 调用JNIEnv实例装载并处理class类。

 

8、Tomcat中会启动一个jvm还是多个jvm?

截止目前为止,一个tomcat,无论里面多少个host/engine/context,就是一个jvm进程。

 

9、JVM怎么优化?

这需要看一本书了,推荐一本《实战Java虚拟机——JVM故障诊断与性能调优》,不谢!简单来说就是设置一下启动参数,比如-Xms512m -Xmx512m -XX:NewSize=128m -XX:MaxNewSize=128m

10、jvm是否可以处理多个Eclipse的调试请求?

单一JVM进程只可处理一个调试连接客户端,当然 Eclipse 可以开启多个 JVM 调试进程。

25612fm立体图

发表评论

您的电子邮件地址将不会被公开. 必填昵称和邮箱 *

*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

你必须启用javascript
滚动到顶部
备案号:浙ICP备08112675号-4 浙公网安备 33010502001953号