JavaSE面试题【每天一整理】

来源:互联网 发布:热云数据 编辑:程序博客网 时间:2024/04/24 05:58

1、Java为什么可以实现跨平台?

答:java源程序(.java)要先编译成与平台无关的字节码文件(.class),字节码只面向java虚拟机,不同的平台有不同的虚拟机,但是接口都是相同的,所以编译后的.class文件可以被不同平台的虚拟机解释。前提是平台必须具有对应的虚拟机,所以其效率会比c和c++低。

2、简述Java垃圾回收机制。

答:在传统的c和c++语言中并没有垃圾回收机制,需要程序员手动回收已经释放的内存,这样程序员如果没有及时回收,可能造成内存泄漏,降低系统性能;还有可能错误回收核心内存而导致系统崩溃。Java不需要程序员回收内存,是由jre在后台自动回收不使用的内存,称为垃圾回收机制。这样不但可以提高程序的效率而且也保证了程序的完整性;其开销影响性能,java虚拟机必须跟踪程序中有用的对象,确定哪些是无用的。

特点:垃圾回收机制只回收堆中的内存空间,不负责栈内的内存数据;对其他物理连接例如:数据库连接、输入输出流、sockte编程无能为力;具有不可预知性,程序无法对其达到精确的控制;可以将对象的引用变量设置为null,暗示垃圾回收机制可以回收该对象;现在的JVM有多种垃圾回收实现算法,表现各异;垃圾回收机制回收任何对象之前,总会先调用它的finalize方法(如果覆盖该方法,让一个新的引用变量重新引用该对象,则会重新激活对象); 程序员可以通过System.gc()或者Runtime.getRuntime().gc()来通知系统进行垃圾回收,会有一些效果,但是系统是否进行垃圾回收依然不确定; 永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用

0 0
原创粉丝点击