南昌Android培训
达内南昌中心

13732203138

热门课程

JVM 底层 与 GC(Garbage Collection) 的面试问题

  • 时间:2018-01-17 16:18
  • 发布:南昌达内
  • 来源:达内教育

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位?
你可以检查某些系统属性如sun.arch.data.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内部的一个进程,回收无效对象的内存用于将来的分配。

上一篇:Android常用面试题解析
下一篇:数据类型和 Java 基础面试问题

CSS基础面试题,前端收

搞定9个Java面试技巧帮你稳拿年薪20W

简历这样写,面试电话接到手软 ?

速收!12道Linux运维必备经典面试题

选择城市和中心
贵州省

广西省

海南省