java 深入源码级的面试题
1、哪些情况下的对象会被垃圾回收机制处理掉?
利用可达性分析算法,虚拟机会将一些对象定义为 ,从 出发沿着引用链
向下寻找,如果某个对象不能通过 寻找到,虚拟机就认为该对象可以被回收掉。
1.1 哪些对象可以被看做是 GC Roots 呢?
)虚拟机栈(栈帧中的本地变量表)中引用的对象;
)方法区中的类静态属性引用的对象,常量引用的对象;
)本地方法栈中 方法)引用的对象;
1.2 对象不可达,一定会被垃圾收集器回收么?
即使不可达,对象也不一定会被垃圾收集器回收,)先判断对象是否有必要执行
方法,对象必须重写 方法且没有被运行过。)若有必要执行,会把对象放到一个
队列中, 会开一个线程去回收它们,这是对象最后一次可以逃逸清理的机会。
2、讲一下常见编码方式?
编码的意义:计算机中存储的最小单元是一个字节即 ,所能表示的字符范围是 个,
而人类要表示的符号太多,无法用一个字节来完全表示,固需要将符号编码,将各种语言
翻译成计算机能懂的语言。
) 码:总共 个,用一个字节的低 位表示,!〜 控制字符如换回车删除等;
"# 是打印字符,可通过键盘输入并显示出来;
)$%&%'用来扩展 编码,# 个字符,涵盖了大多数西欧语言字符。
)()双字节编码,总编码范围是 % '%& 是符号区,包含 # 个字符,(!%( 是
汉字区,包含 # # 个汉字;
*)(+ 为了扩展 ('加入了更多的汉字,编码范围是 *!",-,-,有 &*! 个码位,
能表示 !! 个汉字。
)./,%#)$ 试图想创建一个全新的超语言字典,世界上所有语言都可通过这本字典
.01 来相互翻译,而 ./,%# 定义了 .01 字符在计算机中存取方法,用两个字节来
表示 .01 转化格式。不论什么字符都可用两字节表示,即 #,固叫 ./,%#。
#)./,%:./,%# 统一采用两字节表示一个字符,但有些字符只用一个字节就可表示,浪
费存储空间,而 ./,% 采用一种变长技术,每个编码区域有不同的字码长度。ðð不同类型的
字符可以由 "# 个字节组成。ððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððððð
评论0
最新资源