Loading

摘要: 正文 一、定义 策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。 要点: 策略模式把系统中会变化的部分抽出来封装。 二、实现步骤 1、创建策略接口 /** * 策略接口 */ public interface Strategy { /** * 执行 阅读全文
posted @ 2020-05-27 20:50 惊却一目 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 正文 一、Java 内存区域与内存溢出异常 1、运行时数据区域 程序计数器:当前线程所执行的字节码的行号指示器。线程私有。 Java 虚拟机栈:Java 方法执行的内存模型。线程私有。 本地方法栈:Native 方法执行的内存模型。线程私有。 Java 堆:存放对象实例。分为新生代(Eden 空间、 阅读全文
posted @ 2020-04-16 22:16 惊却一目 阅读(720) 评论(0) 推荐(3) 编辑
摘要: 正文 一、线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。 1、Java 语言中的线程安全 按线程安全的“安全程度”由强至弱排序,可以将 阅读全文
posted @ 2020-04-07 23:19 惊却一目 阅读(288) 评论(0) 推荐(0) 编辑
摘要: 正文 在部分商用虚拟机(Sun HotSpot、IBM J9)中,Java 程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地机器码,并进行各种层次的优化。完成这个任务 阅读全文
posted @ 2020-03-29 22:10 惊却一目 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 正文 Java 语言的 3 类编译器: 前端编译器:把 java 文件 转变成 class 文件。例如:Sun 的 Javac。 JIT 编译器(即时编译器):后端运行期编译器,把字节码转变成机器码。例如:HotSpot VM 的 C1、C2 编译器。 AOT 编译器(静态提前编译器):直接把 ja 阅读全文
posted @ 2020-03-22 20:42 惊却一目 阅读(304) 评论(0) 推荐(0) 编辑
摘要: 正文 执行引擎是 Java 虚拟机最核心的组成部分之一。在不同的虚拟机实现里,执行引擎在执行 Java 代码时可能会有解释执行(通过解释器执行)和编译执行(通过即时编译器产生本地代码执行)两种选择,也可能两者兼备。但从外观上看,所有 Java 虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程 阅读全文
posted @ 2020-03-15 23:26 惊却一目 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 正文 虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制。 一、类加载的时机 1、类的生命周期 加载 → 连接(验证、准备、解析) → 初始化 → 使用 → 卸载 加载、验证、准备、初始化和 阅读全文
posted @ 2020-03-09 22:02 惊却一目 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 正文 一、无关性的基石 1、两种无关性 平台无关性: Java 程序的运行不受计算机平台的限制,“一次编写,到处运行”。 语言无关性: Java 虚拟机只与 Class 文件关联,并不关心 Class 文件的来源是何种语言。 2、无关性的实现基础 各种不同平台的虚拟机 所有平台都统一使用的字节码存储 阅读全文
posted @ 2020-02-28 23:55 惊却一目 阅读(341) 评论(0) 推荐(0) 编辑
摘要: 正文 一、JDK 的命令行工具 JDK 的 bin 目录下提供了一些用于监视虚拟机和故障处理的命令行工具。 名称 主要作用 jps JVM Process Status Tool,显示正在运行的虚拟机进程 jstat JVM Statistics Monitoring Tool,收集虚拟机各方面的运 阅读全文
posted @ 2020-01-14 23:04 惊却一目 阅读(509) 评论(0) 推荐(1) 编辑
摘要: 正文 垃圾收集器关注的是 Java 堆和方法区,因为这部分内存的分配和回收是动态的。只有在程序处于运行期间时才能知道会创建哪些对象,也才能知道需要多少内存。 虚拟机栈和本地方法栈则不需要过多考虑回收的问题,因为栈中每一个栈帧分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的内存分配和回 阅读全文
posted @ 2019-12-25 22:45 惊却一目 阅读(361) 评论(0) 推荐(0) 编辑