JVM
文章平均质量分 82
磊疯
前车之鉴,后车之师
展开
-
JVM- StringTable- String pool- 常量池
1 String类 JDK1.8及之前 char[] (字符串常量池在堆中) JDK1.9 byte[] 2 String不可变 3 字符串拼接 3.1 常量+常量 结果也在常量池 -> 编译期优化 3.2 常量池不存在相同内容的常量 3.3 只要有一个是变量,结果就不在常量池中,而在堆中new String()。原理StringBuilder String s3 = s2 + "d"; String s4 = "abcd"; (s3 == s4 false -> 堆中 new原创 2022-03-01 17:44:56 · 382 阅读 · 0 评论 -
JVM-垃圾回收
1 概念 System.gc() = Runtime.getRuntime().gc() 会显示触发Full GC ,提醒jvm的垃圾回收器执行gc,无法保证对垃圾收集器的立刻调用 System.runFinalization() 强制调用使用引用的对象的finalize()方法 内存溢出:OOM ,没有空闲内存,并且垃圾收集器也无法提供更多内存 (1堆内存小 2大量对象) 内存泄漏:对象不会再被程序用到,但GC又不能回收(宽泛意义:生命周期无效的延长,如局部变量变成成员变量) 例:单例模式生命原创 2022-03-01 17:20:35 · 260 阅读 · 0 评论 -
JVM-基础概念原理
栈也叫方法栈,是线程私有的,线程在执行每个方法时都会同时创建一个栈帧,用来存储局部变量表、操作栈、动态链接、方法出口等信息。调用方法时执行入栈,方法返回时执行出栈。 本地方法栈与栈类似,也是用来保存线程执行方法时的信息,不同的是,执行 Java 方法使用栈,而执行 native 方法使用本地方法栈。 程序计数器保存着当前线程所执行的字节码位置,每个线程工作时都有一个独立的计数器。程序计数器为执行 Java 方法服务,执行 native 方法时,程序计数器为空。 栈、本地方法栈、程序计数器这三个部..原创 2022-03-01 17:04:19 · 251 阅读 · 0 评论