jvm
凌凌六丶
奥里给!
展开
-
java对象的实例化布局
对象创建的方式 · 直接new · 通过反射newInstance · 使用clone()方法 · 通过序列化的方式,一般用于网络传输 对象创建步骤 2.1 判断对象是否已经被加载 先检查在常量池中是否能找到符号引用,检查该符号引用所表示的类是否被加载,解析和初始化,如果没有就调用当前类加载器查找.class文件进行类加载。 2.2 为对象分配内存 2.2.1 指针碰撞:内存规整的情况下 2.2.2 空闲列表:内存不规整 2.2.3 保证并发安全:TLAB 初始化分配到的内存 对所有属性赋初值。 设置对象.原创 2021-04-01 10:07:01 · 112 阅读 · 0 评论 -
垃圾收集算法总结
标记算法 引用计数算法 对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,即表示对象A不可能再被使用,可进行回收。 优点:简单 缺点:需要额外内存存储计数器,每次加减需要时间,最大的缺点是会产生循环引用,造成内存泄漏。 根搜索算法 以根对象集合(GCRoots)为起始点,按照从上至下的方式搜索被根对象集合所连接的目标对象是否可达。如果目标对象没有任何引用链相连,则是不可达的原创 2021-03-21 21:08:14 · 76 阅读 · 0 评论 -
CMS垃圾收集器
特点 这款收集器是HotSpot虚拟机中第一款真正意义上的并发收集器,它第一次实现了让垃圾收集线程与用户线程同时工作。 CMS的垃圾收集算法采用标记-清除算法,并且也会"Stop-the-World"。 工作流程 初始标记阶段:在这个阶段中,程序中所有的工作线程都将会因为“Stop-the-World”机制而出现短暂的暂停,这个阶段的主要任务仅仅只是标记出GC Roots能直接关联到的对象。 并发标记阶段:从GC Roots的直接关联对象开始遍历整个对象图的过程,这个过程耗时较长但是不需要停顿用户线程原创 2021-03-21 20:15:43 · 63 阅读 · 0 评论 -
字符串拼接操作总结
String s1 = "abc" ; // 字面量的定义方式,字符串存储在常量池中 String s2 = new String("hello"); // new 对象的方式 注意事项: String被声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示String可以比较大小 String在jdk8及以前内部定义了final char value[]用于存储字符串数据。JDK9时改...原创 2021-03-21 19:17:26 · 1184 阅读 · 2 评论