上一页 1 ··· 9 10 11 12 13
摘要: 一、线程安全性: 当多个线程访问一个一个对象或者方法的时候,在编写代码的时候,不需要进行额外的处理,就像在单线程环境下一样处理,此时如果还能得到正确的结果,就可以说是线程安全。如果在编写代码的时候,需要进行一些同步的操作(例如使用Synchronized关键字),或者考虑多线程运行的调度和切换(例如 阅读全文
posted @ 2019-05-10 15:17 Diamond-Shine 阅读(818) 评论(0) 推荐(0)
摘要: 本文参考慕课网相关视频和博客https://mp.weixin.qq.com/s/tV0MfDdJqGwGMHCIkqnAgA,图也是这个博客的,这篇只是自己的简单总结,想要深入理解可以访问这两块内容。 一、内存模型定义 java memory model(简称JMM),这是一个抽象的概念,不是真实 阅读全文
posted @ 2019-05-10 11:07 Diamond-Shine 阅读(400) 评论(0) 推荐(0)
摘要: 目前没有完美的收集器,不同的厂商、版本的虚拟机提供的垃圾收集器会有很大的差别,用户根据自己应用特点和要求组合出各个年代所使用 的收集器。基于jdk1.7Update14之后的虚拟机。 官方文档:https://docs.oracle.com/javase/8/docs/technotes/guide 阅读全文
posted @ 2019-05-08 18:01 Diamond-Shine 阅读(483) 评论(0) 推荐(0)
摘要: 什么样的对象需要回收 如果对象已经死亡了,就可以进行回收,判断方式如下 1).引用计数器:给对象添加一个计数器,有地方引用,就+1,当引用失效,就-1。当计数器为0时,判断对象不能再使用,但是当对象相互引 用的时候无法进行GC 1).可达性算法:从GC Roots开始,到对象之间有引用链相连,就是可 阅读全文
posted @ 2019-05-08 17:59 Diamond-Shine 阅读(352) 评论(0) 推荐(0)
摘要: 学习了java运行时数据区,知道每个内存区域保存什么数据,可以参考:https://www.cnblogs.com/huigelaile/p/diamondshine.html,然后了 解内存溢出和内存泄露是很有必要的,一方面是为了面试,更重要是的在工作中能够快速定位错误原因并且解决 内存溢出分类: 阅读全文
posted @ 2019-05-08 16:35 Diamond-Shine 阅读(283) 评论(0) 推荐(0)
摘要: 普通对象的创建(不包括数组和class对象): 当虚拟机遇到new指令时,会在常量池中检查是否包含这个类的符号引用(全限定名),通过这个确定是否经过类加载的过程,如果true,为该 对象分配内存,对象大小在类加载过程就已经确定。如果false,需要进行类加载。 分配内存 1、分配内存的方式: 指针碰 阅读全文
posted @ 2019-05-08 10:37 Diamond-Shine 阅读(384) 评论(0) 推荐(0)
摘要: 一、类的生命周期 加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)、卸载(Unloading) 七个阶段,加载(装载)、验证、准备、初始化和卸载这五个阶段顺序是固定的,类 阅读全文
posted @ 2019-05-07 17:45 Diamond-Shine 阅读(336) 评论(0) 推荐(0)
摘要: 一、java运行时数据区 也可以称为java内存区域,这是一种规范,具体实现和使用哪种虚拟机有关。运行时数据区和java内存模型不是一回事,不要弄混。 官方文档地址:https://docs.oracle.com/javase/specs/jvms/se8/html/index.html 1.1、方 阅读全文
posted @ 2019-05-07 16:01 Diamond-Shine 阅读(1659) 评论(0) 推荐(0)
上一页 1 ··· 9 10 11 12 13