摘要: JDK的bin目录下有很多用于监视虚拟机和故障处理的工具,这些工具都非常稳定而且功能强大,能在处理应用程序性能问题、定位故障是发挥很大的作用。比较细心的读者可能会注意到这些工具的程序体积都异常小巧。并非JDK开发团队刻意把它们制作得如此精炼来炫耀编程水平,而是因为这些命令行工具大多是jdk/lib/ 阅读全文
posted @ 2019-12-01 14:12 wf.zhang 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 三如何垃圾回收 GC(Garbage Collection)垃圾回收算法 标记清除 速度快,但是会产生内存碎片; 标记整理 解决了标记清除内存碎片的问题,但是每次都得移动对象,因此成本很高; 复制算法 没有内存碎片也不需要移动对象,但是导致空间的浪费 分代收集算法:在上边三种收集思想中加入了分代的思 阅读全文
posted @ 2019-12-01 14:05 wf.zhang 阅读(153) 评论(0) 推荐(0) 编辑
摘要: JAVA 四中引用类型 1. 强引用 在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。 当一个对象被强引用变量引用时,它处于可达状态,不可能被垃圾回收机制回收的。强引用是造成 Java 内存泄漏的主要原因之一。 2. 软引用 软引用需要用 SoftRefe 阅读全文
posted @ 2019-12-01 14:04 wf.zhang 阅读(232) 评论(0) 推荐(0) 编辑
摘要: GC(Garbage Collection) 垃圾回收机制 什么是垃圾回收机制 垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用,以免造成内存泄露。 内存中已 阅读全文
posted @ 2019-12-01 14:02 wf.zhang 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 什么是堆内存划分 Java虚拟机根据对象存活的周期不同,把堆内存划分为几块, 一般分为新生代、老年代和永久代,这就是JVM的内存分代策略。(JDK 1.8之后将最初的永久代取消了,由元空间取代) 为什么要分代? 堆内存是虚拟机管理的内存中最大的一块,也是垃圾回收最频繁的一块区域,我们程序所有的对象实 阅读全文
posted @ 2019-12-01 14:00 wf.zhang 阅读(330) 评论(0) 推荐(0) 编辑
摘要: JVM内存结构可以大致可划分为线程私有区域和共享区域, 线程私有区域由虚拟机栈、本地方法栈、程序计数器组成,而共享区域由堆、元数据空间(方法区)组成。 虚拟机栈/本地方法栈 当你碰到过StackOverflowException这个异常的时候,有没有思考下为什么会出现这样的异常呢?答案就在虚拟机栈中 阅读全文
posted @ 2019-12-01 13:53 wf.zhang 阅读(193) 评论(0) 推荐(0) 编辑