摘要:
树 二叉树 二叉搜索树 平衡二叉树 红黑树 \ java集合 https://www.cnblogs.com/LiaHon/p/11203229.html B-树、B+树 https://www.cnblogs.com/vianzhang/p/7922426.html 底层: https://www 阅读全文
摘要:
GC分类与性能指标 GC分类: 按照线程数分,可以分为串行垃圾回收器和并行垃圾回收器 串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾会回收操作,此时工作线程被暂停,直至垃圾收集工作结束。 * 在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过 阅读全文
摘要:
System.gc()的理解 在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显示的触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。即 阅读全文
摘要:
什么是垃圾 垃圾是指运行程序中没有任何指针指向的对象 标记阶段:引用计数算法 引用计数法(Reference Counting)比较简单,对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。 对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就 阅读全文
摘要:
String的基本特性 String 在jdk8之前内部定义了final char[] value 用于存储字符串数据。jdk9时改为byte[]。 字符串常量池中不会存储相同内容的字符串。 String 的String Pool是一个固定大小的HashTable,默认值大小长度是1009.如果放进 阅读全文
摘要:
执行引擎概述 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。 阅读全文
摘要:
引入直接内存的缘由 JDK8将元空间从堆内存移至直接内存 不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域 直接内存是在Java堆外的、直接向系统申请的内存区间 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存(NIO在JDK4引入,JDK 阅读全文
摘要:
对象的实例化 大厂面试题: 创建对象的方式 new 的方式(构造方法) Class的newInstance():反射的方式,只能调用空参的构造器,权限必须是public Constructor的newInstance(Xxx):反射的方式,可以调用空参、带参的构造器,权限没有要求 使用clone() 阅读全文
摘要:
栈、堆、方法区的交互关系 方法区(Method Area)与Java堆一样,是各个线程共享的内存区域 方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。 方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展 方法区的大小决定了系统可以保存多少个类,如果 阅读全文