面试题总结

2017-04-03  本文已影响0人  封若无灵

java内存模型:

程序计数器:用于保存当前正在执行的程序的内存地址。java虚拟机的多线程是通过轮流获取cpu时间片执行的,为了线程切换后能找到正确的位置。每个线程都需要一个独立的程序计数器。

本地方法栈:为虚拟机的Native方法服务。

堆:所有线程共享的一块内存区域。对象实例在这分配。

方法区:线程共享的区域。储存虚拟机加载的类信息。编译后的代码。常量,静态变量。

运行时常量池:代表运行时每个class文件中的常量表。包括几种常量:编译时的数字常量、方法或者域的引用。

StringBuffer是线程安全的StringBuilder是非线程安全的

类加载工作机制:

1.装载:将java二进制代码装入JVM,生成class文件。

2.连接:1 校验 检查class文件正确性 2 准备 给类的静态变量分配空间 3 解析 将符号引用转成直接引用。

3 .初始化:对类的静态变量,静态代码块,静态方法初始化。

双亲委派模型:类加载器收到类加载请求,首先将请求委派给父类加载器完成

hashcode 和equal 方法:

java集合要保证元素不重复 根据Object.equals方法判断,但是如果集合里有1000个元素就要执行1000遍equals方法,效率低,于是java采用哈希表的原理。

上一篇下一篇

猜你喜欢

热点阅读