-
1.简述分派
包括静态分派与动态分派
a.静态分派:发生在编译时期,所有依赖静态类型来定位方法执行版本的分派称为静态分派,典型应用为方法重载。
b.动态分派:在运行期根据实际类型确定方法执行版本的分派过程。典型应用为方法重写。
-
2.Java重写和重载?
方法重载:关键字overload,方法名和方法的返回类型都相同,方法参数个数和类型不一样
方法重写:也叫方法覆盖,关键字override,相对于类继承而言,重写的方法名,返回类型,参数个数,参数类型都要求和父类一样。
-
3.jvm OutMemory的种类?
1.堆溢出:被缓存的实例对象,大的map,list引用大的对象等
2.栈溢出:栈帧太多
3.方法区溢出:加载很多类会有可能出现,GC不会在主程序运行期对此区域进行清理,可通过设置jvm启动参数解决:-XX:MaxPermSize=256m
-
4.简述minor gc和full gc
Minor GC:从新生代回收内存,关键是Eden区内存不足。导致垃圾回收。
Major GC:从老年代回收内存,一般比Minor GC慢10倍以上。
Full GC:对整个堆来说的,出现Full GC通常伴随至少一次Minor GC,但非绝对。
-
5.虚拟机栈中的各个部分?
a.局部变量表b.操作数栈c.动态链接d.方法返回地址.
-
6.对象的内存布局?
对象内存布局分为三部分:对象头、实例数据、对齐填充。
对象头包含两部分:
1.存储对象自身运行时数据
2.对象指向它的类元数据指针–类型指针.以确定这个对象是哪个实例
实例数据:程序代码中所定义的各种类型的字段内容
对齐填充:不是必然存在,仅起到占位符作用.