
《深入理解Java虚拟机》
《深入理解Java虚拟机》的读书笔记。
凶残的程序员
博观而约取,厚积而薄发
展开
-
Java —— 类加载器和双亲委派
类加载器双亲委派模型自定义类加载器类加载器上一篇文章介绍了Java 类加载机制,文中说过,类加载阶段中“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现。也就是说应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称 : “类加载器” 。 jvm并没有指明需要从Class文件中获取,也可以通过ZIP包、网络、动态代理原创 2018-01-18 18:57:03 · 2096 阅读 · 0 评论 -
Java —— 类加载机制
概述类的生命周期加载验证准备解析初始化卸载概述 代码编译是将本地机器码变为字节码,这一过程是存储格式发展的一小步,却是编程语言发展的一大步。虚拟机加载完Class文件,最终形成可以被虚拟机直接使用的Java类型。这一个过程也就是类的加载机制。 Java编译器可以将Java代码(我们平时码的源代码)编译为存储字节码的Class文件(二进制字节原创 2018-01-16 22:43:41 · 1455 阅读 · 0 评论 -
Java垃圾回收(三)—— 图解内存分配策略
经过上两篇垃圾回收的文章我们可以了解到垃圾回收的运作原理。 Java垃圾回收机制 Java垃圾收集器Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题 : 给对象分配内存。回收分配给对象的内存。那么这篇文章就来了解以下内存分配策略。 对象的内存分配,可以说主要就是在堆上分配内存。 对象主要分配在新生代的Eden区上,如果启动了本地线原创 2018-01-14 21:56:50 · 1082 阅读 · 0 评论 -
Java垃圾回收(二)—— 垃圾收集器
概述Stop The World枚举GC Roots安全点安全区域垃圾收集器吞吐量GC的名词并行和并发Serial 收集器单线程垃圾收集新老ParNew 收集器Serial 升级版新Parallel 收集器吞吐量优先新老CMS 收集器停顿时间优先老G1收集器垃圾区域Region优先整个堆垃圾收集器组合概述在我们上一篇文章垃圾回收机制中讲述到了原创 2018-01-14 12:11:12 · 1355 阅读 · 0 评论 -
Java垃圾回收(一)—— 回收机制
垃圾回收哪些内存需要回收什么时候回收如何回收对象回收判定引用计数算法可达性分析算法GC Roots的对象对象之引用垃圾回收算法标记 - 清除算法复制算法标记 - 整理算法分代收集算法新生代老年代分代收集算法工作流程为什么不是一块Survivor空间而是两块为什么Eden空间这么大而Survivor空间要分的少一点 Java原创 2018-01-11 19:03:54 · 1551 阅读 · 2 评论 -
Java —— 多态与分派
多态分派静态分派重载静态分派 之 字面量动态分派重写单分派与多分派虚方法表总结多态 Java具备面向对象的3个基本特征 : 继承,封装(get / set)和多态。 多态 : 继承,重写(Override),向上转型(Human h=new Man())三大必要条件。方法重载 : 同一个方法名,参数或者类型不同。原创 2018-01-23 12:46:02 · 858 阅读 · 0 评论 -
Java对象的内存布局、访问定位和创建
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,外面的人想进去,墙里面的人却想出来。原创 2018-01-08 14:39:45 · 1272 阅读 · 0 评论 -
Java —— 运行时栈帧结构
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。概述栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构。它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。原创 2018-01-21 16:06:06 · 25378 阅读 · 22 评论 -
Java内存区域——堆,栈,方法区等
运行时数据区域程序计数器Java虚拟机栈栈帧本地方法栈堆方法区运行时常量池拓展运行时数据区域jdk1.7中, Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 程序计数器1. 程序计数器(Program Counter Register)是一块较小的内存空间,它可以看做是当前线程所执行的字节码原创 2018-01-02 16:15:48 · 10894 阅读 · 6 评论 -
Java——String对象探索
String 对于日常代码来说是一个使用频率很高的对象,因为它的一些使用数据和基本数据类型有些相似,所以很容易把String 混淆为基本数据类型。原创 2018-01-03 22:17:00 · 2020 阅读 · 3 评论 -
Java——常量池探索
什么是常量? 对于这个问题,可能很多人都可以脱口而出 : 用final修饰的变量是常量 ,或者是在编译时期定义好的字符串。(字符串常量)但是这种说法是不严谨的原创 2018-01-06 16:05:09 · 2183 阅读 · 2 评论