- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 内存分配与回收策略(118页)——摘自《深入理解java虚拟机》(每天学一点Day20191207)
内存分配与回收策略(118页)1.Minor GC和Full GC新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对象大多具备朝生夕死的特性,所有MinorGC非常频繁,一般回收速度也比较快。老年代GC(Major GC/Full GC):指发生在老年代的GC,出现了Major GC,经常会伴随至少一次的MinorGC(Parallel Scavenge收集器的收集...
2019-12-07 12:48:46
148
原创 关于JVM虚拟机的垃圾收集器7种——摘自《深入理解java虚拟机》(每天学一点Day20191114)
虚拟机的垃圾收集器(98页)1.Serial(串行)收集器:最基本、发展历史最悠久的收集器。虚拟机运行在Client模式下的默认新生代收集器。新生代采用复制算法暂停所有用户线程。老年代采用标记-整理算法暂停所有线程。单线程收集器:它只会使用一个CPU或者一条收集线程去完成垃圾收集工作,同时在它进行垃圾收集时,必须暂停其他所有的工作线程,直到他收集结束。优点:简单而高效,对于限定单个CPU的环...
2019-11-14 19:43:55
158
原创 关于有序集合TreeSet(每天学一点Day20191112)
TreeSet是有序的集合,继承自AbstractSetTreeSet泛型类,需要实现comparable接口中的CompareTo方法,即可进行相关排序。实现CompareTo方法时要注意,因为TreeSet的add方法不重复,返回为0的时候,add添加不进去(返回为1或者-1的时候,颠倒顺序可用于倒序、正序的调整),例如: @Override public int com...
2019-11-12 20:13:14
1327
原创 HotSpot虚拟机的算法实现——摘自《深入理解java虚拟机》(每天学一点Day20191111)
HotSpot的算法实现(95页)1.枚举根节点(GC停顿):分析工作必须在一个能确保一致性的快照中进行——这里“一致性”的意思是指在整个分析其间整个执行系统看起来就像是被冻结在某个时间点上。这里GC进行时必须停顿所有Java执行线程(Stop The World),即使在号称不会发生停顿的CMS收集器中,枚举根节点时也是必须要停顿的。2.安全点:程序执行时,并非在所有地方都能停顿下来开始GC...
2019-11-11 19:19:17
223
原创 关于几种垃圾回收算法——摘自《深入理解java虚拟机》(每天学一点Day20191111)
垃圾回收算法(90页)1.标记-清除算法(Mark-Sweep):首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。不足:一个是效率问题,标记和清除两个过程的效率都不高;另一个是空间问题,标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后再程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不得不提前出发GC。2.复制算法(Coping):可以解决效率问...
2019-11-11 17:39:38
146
原创 判断对象已死——摘自《深入理解java虚拟机》(每天学一点Day20191109)
判断对象已死:1》引用计数算法:无法解决相互循环引用的问题。例如:objA.instance=objB及objB.instance=objA等2》可达性分析法:通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可引用的。GC Roots的...
2019-11-09 15:08:17
175
原创 关于OutOfMemoryError异常——摘自《深入理解java虚拟机》(每天学一点Day20191107)
关于OutOfMemoryError异常(73页)1.虚拟机运行时区域除了程序计数器外,其他几个区域都有发生OutOfMemoryError异常OOM2.堆异常:当堆出现异常时,异常堆栈的提示是:java.lang.OutOfMemoryError,进一步提示“java heap space”。接下来确认是否内存泄漏,内存泄漏的话,根据泄漏对象的类型信息和GC Roots引用链的信息,获取泄漏...
2019-11-07 19:27:45
154
原创 Jvm运行区域——摘自《深入理解java虚拟机》(每天学一点Day20191106)
1.程序计数器:可看做当前线程所执行的字节码的行号指示器。(此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域)2.Java虚拟机栈:描述的是java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。2.1局部变量表存放了编译器可知的各种基本数据类型、对象引用和...
2019-11-06 19:34:00
141
原创 关于虚拟机对象——内容摘自《深入理解Java虚拟机》(每天学一点Day20191106)
1.对象的创建:1)当虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。2)在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。3)关于堆中的内存:1》假设Java堆中内存...
2019-11-06 19:29:17
161
原创 常见索引结构介绍(每天学一点Day20190930)
索引结构常见索引结构一、二叉树二、红黑树三、散列索引(应用:Hash表)如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入常见索引结构索引数据结构二叉树、红黑树...
2019-10-14 20:50:00
1017
原创 关于java中的final关键字(每天学一点Day20190927)
1.final关键字的使用一般出于两个理由:设计和效率。2.一般使用final的三种情况:属性、方法和类。一、属性1>一个既是static又是final的变量
2019-09-28 09:33:17
150
原创 关于集合的初始化(每天学一点Day20190926)
public static void main(String[] args) { // 直接初始化 new ArrayList对象 ArrayList<String> list = new ArrayList<>(); list.add("test1"); Map<Integer, St...
2019-09-26 22:59:55
244
原创 JVM入门介绍(1)(每天学一点Day20190925)
1.程序计数器(Program Counter Register)定义:一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号
2019-09-26 09:40:12
104
原创 关于基本数据类型和包装类型(每天学一点Day20190923)
关于基本数据类型和包装类型1.包装类可以为null,基本数据类型不同(包装类是引用传递,基本数据类型是值传递)*延伸1:*包装类是类对象,可拥有方法和字段,而基本数据类型对应的是值*延伸2:*包装类默认值为null,而基本数据类型默认值各不相同*延伸3:*由于包装类可以为null,所以POJO(Plain Ordinary Java Objec)等可以应用,对数据库数据进行get和set,...
2019-09-23 19:52:51
298
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅