![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 94
Anokata
这个作者很懒,什么都没留下…
展开
-
2. Garbage First Garbage Collector in Depth
本章旨在深入了解支持 HotSpot 最新垃圾收集器的原理:Garbage First 垃圾收集器(简称 G1 GC)。第 1 章“垃圾优先概述”中强调过这些原则。在叙述过程中的不同点是,本章将介绍收集周期【collection cycles】、内部结构【internal structures】和算法等概念,然后是全面的细节。这样做的目的是记录详细信息,而不会使外行人负担过重。为了从这一章中获得最大的收获,读者应该熟悉基本的垃圾收集概念和术语,以及垃圾收集在 Java HotSpot JVM 中翻译 2022-04-19 18:32:05 · 147 阅读 · 0 评论 -
1. Garbage First Overview
本章将介绍 Garbage First(G1)垃圾收集器(GC),并从历史角度介绍 Java HotSpot 虚拟机(以下简称 HotSpot)中垃圾收集器,以及 G1 被纳入 HotSpot 中的原因。假定读者熟悉基本的垃圾收集概念,例如年轻代、年老代和压缩。 Java™ Performance 一书的第 3 章“JVM 概述”详细介绍了这些概念。Serial GC 是 HotSpot 于 1999 年作为 Java Development Kit (JDK) 1.3.1 的一部分引入的第一个垃圾收集翻译 2022-04-19 00:17:20 · 127 阅读 · 0 评论 -
第六章 垃圾收集算法
第5章研究了所有垃圾收集器的一般行为,包括适用于所有GC算法的JVM标志:如何选择堆大小、分代大小、日志等等。垃圾收集的基本调优可在许多情况下都是足够的了。如果没有的话,那么就应该检查使用的GC算法的具体操作,以确定如何更改其参数,以最大限度地减少GC对应用程序的影响。调优某个收集器所需的关键信息是启用该收集器时来自GC日志的数据。本章首先从日志输出的角度来看每个算法,这让我们了解GC算法如何工作,以及如何调整它以更好地工作。然后,每个部分都包含调优信息,以实现更好的性能。本章还将详细介绍一些新的实翻译 2022-02-20 13:45:57 · 876 阅读 · 0 评论 -
Java多线程
1.线程安全当多个线程访问某个类时,无论运行时环境采用哪种线程线程调度策略或者这些线程如何交替执行,而且在主调代码中无需任何额外的同步或协同,该类总是可以表现出正确的行为,那么我们称该类是线程安全的。注:在线程安全类中封装了必要的同步机制,因此客户端无需进一步采取同步措施影响线程安全的因素:共享可变实现线程安全的方式:不在线程间共享状态变量,特例:无状态的对象一定是线程安全的...原创 2019-10-22 14:52:53 · 177 阅读 · 0 评论 -
JVM线程同步
1. MonitorJava的监视器支持两种线程同步:互斥【mutual exclusion】:Java虚拟机通过对象锁来支持互斥,以允许多个线程独立地操作共享数据,而不会相互干扰。协作【cooperation】:在Java虚拟机中,通过Object类的wait和notify方法支持协作,这使线程能够一起工作,以实现一个共同的目标。互斥监视器【Monitor】就像一座建筑物,里面有一...翻译 2019-10-18 17:47:29 · 225 阅读 · 0 评论 -
JVM异常与Finally
异常Java虚拟机通过异常表,实现了对异常的处理。Java虚拟机中的异常由Throwable或其子类的实例来表示。抛出异常本质,实际上是程序控制权的一种立即/即时【immediate】的、非局部的【nonlocal 】的转移----从异常抛出点转移到异常处理点。异常分为:同步异常【synchronously exception】:绝大多数的异常是由于当前线程执行的某个操作导致的,这也...翻译 2019-10-17 18:51:45 · 225 阅读 · 0 评论 -
JVM连接模型
驱动Java连接模型的引擎是解析【Resolution】过程。1. 动态连接和解析编译Java程序时,程序中的每个类或接口都会生成一个独立的class文件。尽管各个class文件可能看起来毫无关系,但它们实际上彼此之间以及与Java API的类文件之间都有符号连接。当运行程序时,Java虚拟机加载程序的类和接口,并且在动态连接的过程中将它们连接在一起。class文件将其所有符号引用保存在一个...翻译 2019-10-16 18:50:53 · 208 阅读 · 0 评论 -
类型的生命周期
1.类型加载、连接和初始化Java虚拟机通过加载【loading】、链接【linking】和初始化【initialization】的过程,使得某个类型对当前正在取运行的程序可用。加载是查找具有特定名称的类或接口类型的二进制表示,并从该二进制表示中创建出类或接口的过程。链接是获取一个类或接口,并将其组合到Java虚拟机的运行时状态,以便可以执行它。类或接口的初始化包括执行类或接口的初始化方...翻译 2019-10-16 16:02:35 · 136 阅读 · 0 评论 -
Java优化【Optimizing Java】:理解垃圾回收
Java环境具有多个标志性特征,垃圾收集是其中最容易识别的特征之一。 然而,当Java平台首次发布时,对GC有相当大的敌意。 这是因为Java故意没有提供语言级方法来控制垃圾收集器的行为(即使在现代版本中也是如此)。这意味着在早期,人们对Java GC的性能有一定程度的失望,这影响了对整个平台的看法。然而,强制的、非用户可控制GC的早期愿景不仅仅得到了证明是正确的,而且现在很少有应用程序开发人...翻译 2019-03-01 10:26:05 · 425 阅读 · 0 评论 -
Java优化【Optimizing Java】:高级垃圾回收
在上一章中,我们介绍了Java垃圾收集的基本理论。从那个起点开始,我们将进一步介绍现代Java垃圾收集器的理论。这是一个不可避免的权衡区域,它可以指导着工程师对收集器进行选择。首先,我们将介绍并深入研究HotSpot JVM提供的其他收集器。这包括超低暂停的并发收集器(CMS)和现代通用收集器(G1)。我们还将考虑一些比较少见的收集器。它们是:ShenandoahC4Balanced...翻译 2019-03-01 10:28:16 · 418 阅读 · 0 评论 -
Java优化【Optimizing Java】:优化和性能定义
优化Java(或任何其他类型的代码)的性能通常被视为一门暗黑艺术。性能分析有一个神秘之处——它通常被认为是骇客的一门手艺活。这些人往往能深入了解一个系统,并想出一个神奇的解决方案,使系统工作得更快。这种形象经常与不幸的(但是非常常见的)情况联系在一起,在这种情况下,性能是软件团队的次要考虑因素。这设置了一个场景,在这个场景中,只有在系统已经陷入麻烦时才会进行分析,因此需要一个性能“英雄”来保存它...翻译 2019-03-22 18:37:16 · 677 阅读 · 0 评论 -
Java优化【Optimizing Java】:JVM概述
毫无疑问,Java是世界上最大的技术平台之一,拥有大约900万到1000万开发人员(根据Oracle的数据)。按照设计,许多开发人员不需要知道他们所使用的平台的底层复杂性。这导致了开发人员只有在客户抱怨性能时,才会想到去接触Java调优。然而,对于对性能感兴趣的开发人员来说,理解JVM技术堆栈的基础知识是很重要的。理解JVM技术使开发人员能够编写更好的软件,并为研究与性能相关的问题提供必要的理论...翻译 2019-03-22 18:37:39 · 529 阅读 · 0 评论 -
Java优化【Optimizing Java】:硬件和操作系统
为什么Java开发人员要关心硬件?多年来,计算机行业一直受到摩尔定律(Moore 's Law)的推动。摩尔定律是英特尔(Intel)创始人戈登•摩尔(Gordon Moore)对处理器性能长期趋势提出的假设。定律(实际上是一种观察或推断)可以用多种方式来构建,但最常见的一种方式是:大规模生产的芯片上的晶体管的数量大约每18个月翻一番。这种现象代表了计算机能力随时间的指数增长。它最初是在1...翻译 2019-03-22 18:45:32 · 829 阅读 · 0 评论