我与宝宝的第一次相遇

生命中因为有了你,而变得多姿多彩。去年结婚,年底媳妇就怀了小宝宝,没有任何备孕过程,纯粹是意外之喜。第一次吃叶酸也是一个月后了,现在还担心叶酸是不是补充的太晚。为了在孕期给媳妇更好的保驾护航,买了本《协和怀孕大百科》,内容十分详实。今年厨艺也有非常大的进步,难以想象曾经靠外卖度日的我,也会有这样买菜摘洗、调制腌制、烹饪炝锅、刷锅洗碗的一天。有变化才会有乐趣,一成不变、一眼看到老的人生该是多么乏味呢。

JVM 探秘 5:垃圾收集算法

JVM 探秘 5:垃圾收集算法
垃圾收集算法垃圾收集算法主要有标记-清除算法、复制算法、标记-整理算法、分代收集算法这几种,对算法的具体实现不做过多探究,只对他们的设计思想进行介绍。标记-清除算法最基础的算法就是标记-清除(Mark-Sweep)算法,同它的名字一样,分为“标记”和“清除”两个阶段:首先标记出所有待回收的对象,标记完后统一回收所有被标记的对象。标记过程其实就是上一篇文章讲到的判断对象是否“死亡”的过程,通过引用计数

JVM 探秘 4:四种引用、对象的生存与死亡

JVM 探秘 4:四种引用、对象的生存与死亡
Java 虚拟机的内存区域中,程序计数器、Java 栈和本地方法栈是线程私有的,随线程而生随线程而灭,因此这几个区域的内存回收和分配都有确定性,所以主要探究的是 Java 堆和方法区的内存分配及回收。Java 堆在 Java 堆中存放着所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是判断这些对象中哪些还存活,哪些已经死去(即不会再被使用到的对象)。Java 中的引用在 JDK1.2 及之前,关于引用的定义是这样

JVM 探秘 3:内存溢出

JVM 探秘 3:内存溢出
在 Java 虚拟机内存区域中,除了程序计数器外,其他几个内存区域都可能会发生 OutOfMemoryError,这次通过一些代码来验证虚拟机各个内存区域存储的内容。在实际工作中遇到内存溢出异常时,需要做到能根据异常信息快速判断是哪个内存区域的溢出,知道什么样的代码会导致这些区域内存溢出,并且知道出现内存溢出后如何处理。Java 堆溢出 Java 堆用于存储对象实例,只要不断的扩展对象,并且保证 GCRoots 到

JVM 探秘 2:Java 对象

JVM 探秘 2:Java 对象
对象的创建虚拟机遇到一条 new 指令时,首先去检查这个指令的参数是否能在方法区常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,就必须先执行相应的类加载过程。类加载检查过后,虚拟机为新生对象分配内存。对象所需内存大小在类加载过后就完全确定,为对象分配空间就等同于,从 Java 堆中划分出一块确定大小的内存。此时有两种情况:如果 Java 堆中内存是规整的,那么虚

JVM 探秘 1:Java 内存区域

JVM 探秘 1:Java 内存区域
本系列笔记目前主要基于《深入理解 Java 虚拟机:JVM 高级特性与最佳实践第 2 版》,后续还会加入《实战 Java 虚拟机:JVM 故障诊断与性能优化》、《Java 性能权威指南》、《Java 性能优化权威指南》的阅读笔记。概述 Java 虚拟机为程序员分担了很多内存管理的工作,不再像 C/C++ 那样容易出现内存泄漏和内存溢出问题了,也正是这样,导致一旦出现了内存泄漏和溢出方面的问题,就难以排查。因此一个优秀的 Java

编程书单

计算机基础《深入理解计算机系统第 3 版》《计算机网络第 6 版》《数据结构与算法分析:Java 语言描述》《算法第 4 版》《计算机组成与设计:硬件/软件接口第 4 版》网络《TCP/IP 详解卷 1:协议第 2 版》《Wireshark 网络分析就这么简单》林沛满《wireshark 网络分析的艺术》林沛满《JavaTCP/IPSocket 编程》《图解 HTTP》《HTTP 权威指南》Java《Java 核心技术·卷 1:基础知识第

把 28 岁当作 18 岁

今天是 2018 年 01 月 12 日,是时候该写一篇年度总结了,拖延到了现在。自从毕业参加工作以来,一直没有写过年度总结。当我在上班早高峰的公交上,敲下这些字的时候,突然发觉要做出改变,无需太大决心,只要行动这两个字就够了。北方的严寒是如此的亲切,让我回忆起儿时在雪地里的嬉戏打闹。这一年因为遇到了她,我把家安在了天津,慢慢融入这个城市。学业人生前二十年,基本都花在学业上。从幼儿园到大学,学习伴随着我们长大,