阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android
1、哪些情况下的对象会被垃圾回收机制处理掉?
利用可达性分析算法,虚拟机会将一些对象定义为GC Roots,从GC Roots出发沿着引用链向下寻找,如果某个对象不能通过GC Roots寻找到,虚拟机就认为该对象可以被回收掉。
1.1 哪些对象可以被看做是GC Roots呢?
1)虚拟机栈(栈帧中的本地变量表)中引用的对象;
2)方法区中的类静态属性引用的对象,常量引用的对象;
3)本地方法栈中JNI(Native方法)引用的对象;
1.2 对象不可达,一定会被垃圾收集器回收么?
即使不可达,对象也不一定会被垃圾收集器回收
1)先判断对象是否有必要执行finalize()方法,对象必须重写finalize()方法且没有被运行过。
2)若有必要执行,会把对象放到一个队列中,JVM会开一个线程去回收它们,这是对象最后一次可以逃逸清理的机会。
2、讲一下常见编码方式?
编码的意义:计算机中存储的最小单元是一个字节即8bit,所能表示的字符范围是255个,而人类要表示的符号太多,无法用一个字节来完全表示,固需要将符号编码,将各种语言翻译成计算机能懂的语言。
1)ASCII码:
总共128个,用一个字节的低7位表示,0〜31控制字符如换回车删除等;32~126是打印字符,可通过键盘输入并显示出来;
2)ISO-8859-1
用来扩展ASCII编码,256个字符,涵盖了大多数西欧语言字符。
3)GB2312
双字节编码,总编码范围是A1-A7,A1-A9是符号区,包含682个字符,B0-B7是汉字区,包含6763个汉字;
4)GBK
为了扩展GB2312,加入了更多的汉字,编码范围是8140~FEFE,有23940个码位,能表示21003个汉字。
5)UTF-16
ISO试图想创建一个全新的超语言字典,世界上所有语言都可通过这本字典Unicode来相互翻译,而UTF-16定义了Unicode字符在计算机中存取方法,用两个字节来表示Unicode转化格式。不论什么字符都可用两字节表示,即16bit,固叫UTF-16。
6)UTF-8:
UTF-16统一采用两字节表示一个字符,但有些字符只用一个字节就可表示,浪费存储空间,而UTF-8采用一种变长技术,每个编码区域有不同的字码长度。 不同类型的字符可以由1~6个字节组成。
3、utf-8编码中的中文占几个字节;int型几个字节?
utf-8是一种变长编码技术,utf-8编码中的中文占用的字节不确定,可能2个、3个、4个,int型占4个字节。
4、静态代理和动态代理的区别,什么场景使用?
代理是一种常用的设计模式,
目的是:
为其他对象提供一个代理以控制对某个对象的访问,将两个类的关系解耦。代理类和委托类都要实现相同的接口,因为代理真正调用的是委托类的方法。
区别:
1)静态代理:
由程序员创建或是由特定工具生成,在代码编译时就确定了被代理的类是哪一个是静态代理。静态代理通常只代理一个类;<

最低0.47元/天 解锁文章
313

被折叠的 条评论
为什么被折叠?



