●声明1:根据JVM397196583整理的常见问题,答案经过主验证,喜欢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配置文件:quiredJavaVersion=1.5
-Xms40m
-Xmx256m,将Xmx改为512m或者更大,如果改了过后,打不开Eclipse的话,则说明系统内存不够。
4、系统时间和JVM的Date时间不一致?
造成这种问题的原因可能是:你的操作系统时区跟你JVM的时区不一致。
你的操作系统应该是中国的时区吧,而JVM的时区不一定是中国时区,你在应用服务器的Java虚拟机添加如下配置:-ding=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虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构:
●bootstrap classloader
●extension classloader
●system classloader
7、JVM的启动步骤是什么?
JVM工作原理和特点主要是指操作系统装入JVM,是通过jdk中来完成,通过下面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 调试进程。
11、如何查看jvm版本?
public class VersionDemo {
public static void main (String args[]) {
System.out.println("jvm 实现版本:\t" + Property("java.vm.version"));
System.out.println("jvm 规范版本:\t" + Property("java.vm.specification.version"));
}
}
12、32位开发环境编译的class,可以在64位JVM上直接运行吗?
可以。编译好的class文件与位数没有关系。因为class文件是一个结构严格的二进制文件。
13、windows7怎么查看java虚拟机版本?
1,运行,运行cmd
2,运行java -version
14、Java虚拟机的作用?
Java Virtual Machine(Java虚拟机),它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运
行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器指令执行。
15、什么叫运行在同一个JVM中的应用程序?
一个web服务器是一个jvm
运行在同一个服务器上的servlet用的是同一个jvm
在命令提示符下面输入c:\>java 就启动了一个jvm
java64位16、服务器为每个连接新开一个JVM, 还是所有连接共用一个JVM?
可以是多个,也可以是一个,如果使用了EJB,那么EJB和web容器是在不通的JVM中的,而静态变量是针对同一个JVM而言,并不会影响另一个JVM中的变量。
17、JVM 有哪两种模式?
Server模式与client模式。
18、JVM Server模式与client模式这个在启动时需要手工指定吗?
可以指定。64为jvm 都是server 默认,32位看内存和cpu数量,虚拟机会根据情况选择,也可以自己通过-client和-server指定运行模式。
19、64位的系统使用32位的jdk,性能会有问题嘛?
不会,64位系统用32位程序很正常。但32位系统有局限性,需要大内存就用64位的。如果不需要大内存,32位系统也是不错的选择,因为64位的指针比较大,需要压缩指针,64位系统会使用更多的系统内存。
20、JVM压缩指针用什么参数?
-XX:+UseCompressedOops
21、Android的和JAVA的JVM一样嘛?
不一样,android的软件开发环境只是用了java的语法,他的虚拟机从jvm发展过去,但是做了很多改进。基本上现在和jvm的体系结构都是不同的,可以认为,是jvm的另外一个分支了。
22、hotspot是sun的那个吗?
是
23、jvm代码是用c写的么?
jvm代码是用C++写的。
24、怎么监控JVM的使用情况?
监控JVM的运行可以使用JVM自带的工具,如JConsole等。
25、如何查看JVM默认堆空间大小?
在运行里面输入cmd
然后输入java -XX:+PrintFlagsFinal | findstr HeapSize
再回车连接就可以了
26、GC是针对线程的,还是整个进程的??
针对整个虚拟机.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论