南昌IT培训
美国上市IT培训机构
18357109557
31)64位JVM中,int的长度是多数?
Java中,int类型变量的长度是一个固定值,与平台无关,都是32位。意思就是说,在32位和64位的Java虚拟机中,int类型的长度是相同的。
32)Serial与Parallel
GC之间的不同之处?
Serial与Parallel在GC执行的时候都会引起stop-the-world。它们之间主要不同serial收集器是默认的复制收集器,执行GC的时候只有一个线程,而parallel收集器使用多个GC线程来执行。
33)32位和64位的JVM,int类型变量的长度是多数?
32位和64位的JVM中,int类型变量的长度是相同的,都是32位或者4个字节。
34)Java中WeakReference与SoftReference的区别?
虽然WeakReference与SoftReference都有利于提高GC和内存的效率,但是WeakReference,一旦失去最后一个强引用,就会被GC回收,而软引用虽然不能阻止被回收,但是可以延迟到JVM内存不足的时候。
35)WeakHashMap是怎么工作的?(答案)
WeakHashMap的工作与正常的HashMap类似,但是使用弱引用作为key,意思就是当key对象没有任何引用时,key/value将会被回收。
36)JVM选项-XX:+UseCompressedOops有什么作用?为什么要使用?
当你将你的应用从32位的JVM迁移到64位的JVM时,由于对象的指针从32位增加到了64位,因此堆内存会突然增加,差不多要翻倍。这也会对CPU缓存(容量比内存小很多)的数据产生不利的影响。因为,迁移到64位的JVM主要动机在于可以指定最大堆大小,通过压缩OOP可以节省一定的内存。通过-XX:+UseCompressedOops选项,JVM会使用32位的OOP,而不是64位的OOP。
37)怎样通过Java程序来判断JVM是32位还是64位?
.model或os.arch来获取该息。
38)32位JVM和64位JVM的最大堆内存分别是多数?
理论上说上32位的JVM堆内存可以到达2^32,即4GB,但实际上会比这个小很多。不同操作系统之间不同,如Windows系统大约1.5 GB,Solaris大约3GB。64位JVM允许指定最大的堆内存,理论上可以达到2^64,这是一个非常大的数字,实际上你可以指定堆内存大小到100GB。甚至有的JVM,如Azul,堆内存到1000G都是可能的。
39)JRE、JDK、JVM及JIT之间有什么不同?
JRE代表Java运行时(Java
run-time),是运行Java引用所必须的。JDK代表Java开发工具(Java
development kit),是Java程序的开发工具,如Java编译器,它也包含JRE。JVM代表Java虚拟机(Java
virtual machine),它的责任是运行Java应用。JIT代表即时编译(Just In
Time compilation),当代码执行的次数超过一定的阈值时,会将Java字节码转换为本地代码,如,主要的热点代码会被准换为本地代码,这样有利大幅度提高Java应用的性能。
3年工作经验的Java面试题
40)解释Java堆空间及GC?
当通过Java命令启动Java进程的时候,会为它分配内存。内存的一部分用于创建堆空间,当程序中创建对象的时候,就从对空间中分配内存。GC是JVM内部的一个进程,回收无效对象的内存用于将来的分配。