读书笔记-疯狂Java:突破程序员基本功的16课
joexk
点滴记录
展开
-
1 数组与内存控制
Java 数组的静态特性Java 数组的内存分配机制初始化 Java 数组的两种方式初始化基本类型数组的内存分配初始化引用类型数组的内存分配原创 2017-12-31 01:02:46 · 260 阅读 · 0 评论 -
11.3 红黑树
1 红黑树性质红黑树是针对排序二叉树在最坏情况下会变成普通链表导致检索效率慢而改进的一种排序二叉树。注:排序二叉树可以快速检索,只是在最坏的情况下,比如插入的节点集本身是有序的(由大到小,或由小到大排列),那么最后得到的排序二叉树将变成链表:所有节点只有左节点(节点集由大到小排列),或者所有节点只有右节点(节点集由小到大排列),此时排序二叉树就变成了普通链表,其检索效率会很差。红黑树是...原创 2018-04-06 23:36:57 · 215 阅读 · 0 评论 -
11.3 遍历二叉树方法整理
对二叉树遍历其实是将二叉树中的节点(非线性结构)以线性序列访问的过程。如果二叉树是顺序结构(数组)保存的,直接遍历底层数组即可; 如果二叉树是用链表保存节点的,有下面两类遍历方式:1) 深度优先遍历:先访问到树中最深层次的节点。有如下3种方式:先(前)序遍历中序遍历后序遍历2) 广度优先遍历:逐层访问每层节点,即先访问根节点,然后第二层节点……,所以又被称为按层遍历。...原创 2018-03-24 09:11:55 · 173 阅读 · 0 评论 -
4 Java 内存回收及算法 — 内存管理技巧整理
熟悉 Java 的内存分配、垃圾回收机制是为了更好的管理 JVM 内存,这样才能提高程序的运行性能,下面列出几个内存管理的小技巧。1 尽量使用直接量当需要使用字符串,以及基本类型对应的包装类(Byte、Short、Integer、Long、Float、Double、Boolean、Character)的实例时,程序应该直接采用直接量来创建,而不建议采用 new 的方式。如:S原创 2018-01-25 23:43:59 · 557 阅读 · 0 评论 -
5 表达式中的陷阱整理
本节要点:表达式类型自动提升的陷阱复合赋值运算符隐含的类型转换原始类型带来的泛型擦除Java 不支持泛型数组正则表达式中点号(.)匹配任意字符不要调用线程对象的 run() 方法静态同步方法的同步监视器是类多线程执行环境的线程安全问题1 JVM 对字符串的处理先看一条创建字符串对象的代码,如下:String str = new String("hell原创 2018-02-01 23:54:12 · 244 阅读 · 0 评论 -
2 对象与内存控制
本节要点变量初始化细节构造器父、子实例的实例变量的内存分配机制父、子类的类变量的内存分配机制Final 方法注意点Java 内存管理包括两方面:内存分配和内存回收。 内存分配特指创建 Java 对象时 JVM 为该对象在堆内存中所分配的内存空间; 内存回收指当Java 对象失去引用,JVM 的 GC 机制会自动清理该对象,回收该对象所占用的内存。虽然 JVM 内置了原创 2017-12-31 23:56:20 · 205 阅读 · 0 评论 -
4 Java 内存回收及算法 — 垃圾回收机制整理
垃圾回收机制主要完成两件事件:1) 跟踪并监控每个对象,当某个对象处于不可达状态时,回收该对象所占用的内存;2) 整理内存分配、回收过程中产生的内存碎片这两方面的工作量都不小,因此垃圾回收算法成为限制 Java 程序运行效率的重要因素。实现高效 JVM 的一个重要方面就是提供高效的垃圾回收机制,高效的垃圾回收机制既能保证垃圾回收的快速运行,避免内存的分配和回收成为应用程序的性能瓶颈,又不能导致应用程原创 2018-01-24 00:29:14 · 351 阅读 · 0 评论 -
4 Java 内存回收及算法 — 引用及内存泄漏
本节要点Java 引用Java 内存泄漏的原因垃圾回收机制的基本算法堆内存的分代回收内存管理小技巧 问题1、JVM 在什么时候决定回收一个对象所占据的内存?当一个 Java 对象失去引用时,JVM 的垃圾回收机制会自动清除对象,回收其所占用的内存空间。 也就是说,当 Java 对象被创建后,垃圾回收机制会实时的监控每个对象的运行状态,包括对象的空间申请、引用、被原创 2018-01-21 16:14:44 · 378 阅读 · 0 评论 -
3 Java 集合的实现细节
本节要点Set 和 Map 关联之处HashMap 底层的 Hash 存储机制Hash 存储机制的快速存取原理TreeMap 底层的红黑树存储机制红黑树的快速访问机制Set 实现的底层依然是 MapMap 和 List 的相似性List 集合代表线性表ArrayList 集合底层的数组实现LinkedList 集合底层的链表实现ArrayList 和 LinkedList...原创 2018-01-03 23:32:15 · 304 阅读 · 0 评论 -
JVM 性能监控与故障处理工具
定位系统问题的时候,需要依据系统输出的数据信息查看具体原因,当然需要借助相应的工具以方便处理数据信息。这里的数据信息包括:运行日志、GC 日志、异常堆栈、线程快照(threaddump/javacore 文件)、堆转储快照(heapdump/hprof文件)等。JDK 的bin目录中提供了很多命令行工具,如我们熟悉的“java.exe”、“javac.exe”,其他命令参考bin目录。这些工具...原创 2018-09-30 23:13:35 · 621 阅读 · 0 评论