深入理解java虚拟机 (一) 第二版

前言:

Java是目前用户最多、使用范围最广的软件开发技术之一。Java 的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java API、 Java编程语言及许多第三方Java框架(如Spring、Struts 等)构成。在国内,有关Java API Java语言语法及第三方框”架的技术资料和书籍非常丰富, 相比之下,有关Java虚拟机的资料却显得异常贫乏。.这种状况在很大程度上是由Java开发技术本身的一-个重要优点导致的:在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性。运行程序的物理机器的情况千差万别,而Java虚拟机则在差万别的物理机上建立了统= -的运行平台,实现了在任意- - 台虚拟机上编译的程序都能在任何一台虚拟机上正常运行。这-极大优势使得Java应用的开发比传统CLC++应用的开发更高效和快捷,程序员可以把主要精力集中在具体业务逻辑上,而不是物理硬件的兼容性上。在一般情况下, 一个程序员只要了解了必要的Java API、Java 语法,以及学习适当的第三方开发框架,就已经基本能满足日常开发的需要了,虚拟机会在用户不知不觉中完成对硬件平台的兼容及对内存等资源的管理工作。因此,了解虚拟机的运作并不是一-般开发人员必须掌握的知识。然而,凡事都具备两面性。随着Java技术的不断发展,它被应用于越来越多的领域之中。其中-些领域,如电力、金融、通信等,对程序的性能、稳定性和可扩展性方面都有极高的要求。程序很可能在10个人同时使用时完全正常,但是在10 000个人同时使用时就会缓慢、死锁,甚至崩溃。毫无疑问,要满足10 000个人同时使用需要更高性能的物理硬件,但是在绝大多数情况下,提升硬件效能无法等比例地提升程序的运作性能和并发能力,甚至可能对程运作状况完全没有任何改善。这里面有Java虚拟机的原因:为了达到给所有硬件提供-致的虚拟平台的目的,牺牲了- -些与硬件相关的性能特性。更重要的是人为原因:如果开发大员不了解虚拟机- -些技术特性的运行原理,就无法写出最适合虚拟机运行和自优化的代码。其实,目前商用的高性能Java虚拟桃都提供了相当多的优化特性和调节手段,用于满足应用程序在实际生产环境中对性能和稳定性的要求。如果只是为了人门学习,让程序在自己的机器上正常运行,那么这些特性可以说是可有可无的;如果用于生产开发,尤其是企业级生产开发,就迫切需要开发人员中至少有一部分人对虚拟机的特性及调节方法具有很清晰的认识,所以在Java开发体系中,对架构师、系统调优师、高级程序员等角色的需求一直都非常大。学习虚拟机中各种自动运作特性的原理也成为了Java 程序员成长道路上必然会接触到的- -课。本书可以使读者以-一种相对轻松的方式学习虚拟机的运作原理,对Java程序员的成长也有较大的帮助。

第2版与第1版的区别

JDK 1.7在2011 年7月28日正式发布,相对于2006年发布的JDK 1.6,新版的JDK有了许多新的特性和改进。本书的第2版也相应地进行了修改和升级,把讲解的技术平台从JDK 1.6提升至JDK 1.7。例如,增加了对JDK 1.7中最新的G1收集器,以及JDK 1.7中JSR-292 knvokeDynamic (对非Java语言的调用支持)的分析讲解等内容。在第1版出版后,笔者收到了许多热心读者的反馈见,部分读者提出OpenJDK开源已久,第厂版却很少有直接分析OpenJDK源码的内容,有点“视宝山而不见”的感觉。因此,在本书第2版中,笔者特别加强了对这部分内容的讲解,其中在第1章中就介绍了如何分析、调试OpenJDK源码等。在本书后续章节中,不少关于功能点的讲解都直接使用OpenJDK中的HotSpot源码或者JIT编译器生成的本地代码作为论据。如何把Java虚拟机原理中许多理论性很强的知识、特性应用于实践开发,是本书贯穿始终的指。由于笔者希望在本书第2版中进一步加强知识的实践性,因此增加了许多对处理JVM常见问题技能的讲解,包括如何分析GC日志、如何分析JIT编译器代码优化过程和生成代码等。并且,在第1版的基础上,第2版中进一步增加了若干处理JVM问题的实践案例供读者参考。另外,本书第2版还修正了第1版中多处错的、有歧义的和不完整的描述。有关勘误信息,可以参考第1版的勘误页面(tp://icyfenix.iteye.com/blog/1119214)。

本书面向的读者

(1)使用Java技术体系的中、高级开发人员
Java虚拟机作为中、高级开发人员必须修炼的知识,有着较高的学习门槛,本书可作为学习虚拟机的优秀教材。
(2)系统调优师
系统调优师是近几年才兴起的职业,本书中的大量案例、代码和调优实战将会对系统调优师的日常工作有直接的帮助。
(3)系统架构师
保障系统的性能、并发和伸缩等能力是系统架构师的主要职责之-一,而这部分与嘘拟机的运作密不可分,本书可以作为他们制定应用系统底层框架的参考资料。
 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

畅通您的iOS开发之路

随着大家对苹果产品的趋之若鹜,iphone与ipad软件开发的前景也相当广阔。然而,目前精通iOS开发的专业人才却是凤毛麟角。因此,安博中 程在2012年推出重磅课程——“iPhone与iPad开发实战之路——精通iOS开发”高级培训班,为想从事i…

深入理解java虚拟机 (二) 第二版

如何阅读本书 本书-共分为五个部分:走近Java、自动内存管理机制、虛拟机执行子系统、程序编译与代码优化、高效并发。各部分基本上是互相独立的,没有必然的前后依赖关系,读者可以从任何- -个感兴趣的专题开始阅读,但是每个部分中的各个章节间…

最优化学习笔记(十六)——拟牛顿法(2)

Hessian矩阵逆矩阵的近似 一、拟牛顿法的基本思路 令H0,H1,H2,…表示Hessian矩阵逆矩阵F(x(k))−1的一系列近似矩阵。我们要讨论的是这些近似矩阵应该满足的条件,这是拟牛顿法的基础。首先,假定目标函数f的Hessian矩阵F(x)是常数矩阵,与x无关…

tool vmmap 配置符号文件 symbolic file

转载于:https://www.cnblogs.com/titer1/archive/2012/03/21/2410316.html

最优化学习笔记(十七)——拟牛顿法(3)

秩1修正公式 在秩1修正公式中,修正项为αkz(k)z(k)T,αk∈R,z(k)∈Rn,是一个对称矩阵,近似矩阵的更新方程为: Hk1Hkαkz(k)z(k)T\boldsymbol{H}_{k+1} = \boldsymbol{H}_{k} + \alpha_k\boldsymbol{z}^{(k)}\boldsymbol{z}^{(k)T}注意&#…

深入理解java虚拟机 (三) 第二版

参考资料 本书名为“深人理解Java虚拟机”,但要想深人理解虚拟机,仅凭- -本书肯定是远远不够的,读者可以通过以下信息找到更多关于Java虚拟机方面的资料。我在写作此书的时候,也从下面这些参考资料中获得了很大的帮助。. (1)书籍…

memcached 如果进程占用cpu很高

memcached 如果进程占用cpu很高一客户占用到了 25% 把mencache内存大小从32m 改成256m 后 memcached 基本占用cpu 是0可能分配的内存不够用了 大量的新缓存需要进入 同时大量的旧缓存又需要被淘汰出来 导致 一进一出非常频繁 从而导致服务性能下降加大内存吧操作如下&#xff…

最优化学习笔记(十八)——拟牛顿法(4)DFP算法

秩2算法可以保证在任意第k步迭代下, 只要一维搜索是精确的,近似矩阵Hk就是正定的。 DFP算法 令k0,选择初始点x(0),任意选择一个堆成正定实矩阵H0。如果g(k)0, 停止迭代; 否则,令d(k)−Hkg(k)计算 αkargminα≥0f(x(k)αd(k)…

《深入理解java虚拟机》第1章 走近Java

1.4 Java虚拟机发展史 上一节我们从整个Java技术的角度观察了Java 技术的发展,许多Java程序员都会潜意识地把它与Sun公司的HotSpot虚拟机等同看待,也许还有一些程序员会注意到BEA.JRockit和IBM J9,但对JVM的认识不仅仅只有这些。从1996年初S…

Asp.net报表制作 OpenFlashChart免费图表组件

Asp.net报表制作 OpenFlashChart免费图表组件 OpenFlashChart是一款开源的以Flash和Javascript为技术基础的免费图表组件,用它能创建一些很有效果的报表分析图表。  最重要的是它是开源和免费的,该组件使用flash展示报表能够很好的做到与浏览器进行集成…

使用简单的5个步骤设置 Web服务器集群

通过在多个处理器之间分担工作负载并采用多种软件恢复技术,能够提供高度可用的环境并提高环境的总体 RAS(可靠性、可用性和可服务性)。可以得到的好处包括:更快地从意外中断中恢复运行,以及将意外中断对终端用户的影响…

最优化学习笔记(十九)——拟牛顿法(5)BFGS算法

一、BFGS算法的更新公式 为了推导BFGS算法,需要用到对偶或者互补的概念,前边已经讨论过hessian矩阵逆矩阵的近似矩阵需要满足以下条件: Hk1Δg(i)Δx(i)0≤i≤k\boldsymbol{H}_{k+1} \Delta\boldsymbol{g}^{(i)} = \Delta\boldsymbol{x}^{(i…

浅谈HotSpot逃逸分析

JIT 即时编译(Just-in-time Compilation,JIT)是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技术。在HotSpot实现中有多种选择:C1、C2和C1C2,分别对应client、server和分层编译。 …

pku 1611 The Suspects 并查集的应用

http://poj.org/problem?id1611 思路&#xff1a;统计出和0能够联系在一起的点&#xff0c;然后输出其个数 View Code #include <cstdio>#include <iostream>#define maxn 30004using namespace std;int f[maxn],num[maxn];//num记录与0有联系的个数int n,m;int …

Java陷阱(一)——ArrayList.asList

一、问题代码 话不多说&#xff0c;直接上问题代码&#xff1a; package com.pajk.recsys.dk.test;import java.util.ArrayList; import java.util.Arrays; import java.util.List;import com.pajk.recsys.utils.CommonUtils;public class CommonTest {public static List<…

ElasticSearch bool过滤查询

bool过滤查询 可以实现组合过滤查询 格式: { "bool": { "must: 0, "should: O, "must not":0}} must:必须满足的条件---and should:可以满足也可以不满足的条件--or must_ not:不需要满足的条件--not GET /lib5/items/_search { "post_fi…

Word2Vec训练同义词模型

一、需求描述 业务需求的目标是识别出目标词汇的同义词和相关词汇&#xff0c;如下为部分目标词汇(主要用于医疗问诊)&#xff1a; 尿 痘痘 发冷 呼吸困难 恶心 数据源是若干im数据&#xff0c;那么这里我们选择google 的word2vec模型来训练同义词和相关词。 二、数据处理…

ElasticSearch 聚合查询

价格总和&#xff1a; 1,使用aggs 2,自己起个名字price_of_sum 3,求和sum 4&#xff0c;filed要求和的字段 GET /lib5/items/_search {"aggs": {"price_of_sum": {"sum": {"field": "price"}}} }聚合查询结果&#x…

hdu Candy Sharing Game

http://acm.hdu.edu.cn/showproblem.php?pid1034 模拟题 View Code 1 #include<iostream> 2 using namespace std; 3 int a[100000]; 4 int b[100000];//a的一半 5 int n; 6 int main() 7 { 8 while(cin>>n && n) 9 {10 int i;11 …

Spark下的word2vec模型训练

一、引言 前边一节介绍了Word2Vec模型训练同义词&#xff0c;那么在大数据量的情况下&#xff0c;我们自然想到了用spark来进行训练。下面就介绍我们是如何实现spark上的模型训练。 二、分词 模型训练的输入是分好词的语料&#xff0c;那么就得实现spark上的分词。 def split…