面试题总结

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采用哈希表的原理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容