Java虚拟机故障诊断和性能优化

  前边我们讲了如何使用Mybatis的Mapper代理的方式完成DAO层的开发,即程序员需要先定义一个mapper.xml映射文件,然后按照四种规范定义一个DAO接口即其中的方法,那么就可以在程序中使用sqlSession.getMapper(DAO.class)来获取DAO接口对应的实例了,进而也就可以调用相应的方法了。

  学习了这么久的Java基础和Java的框架,发现在敲代码的过程中,偶尔会遇到内存溢出的情况,有栈溢出(StackOverFlow)和堆溢出(OutOfMemory),主要意思是程序在Java虚拟机中运行时,jvm的存储实例对象和区域和存储引用变量的区域已经存不下了,超出设定的峰值而导致的。为了研究这类问题和更好的理解Java程序的在虚拟机中的运行机制,我昨天刚刚买了两本书:《实战Java虚拟机:JVM故障诊断与性能优化》《深入理解Java虚拟机》。为了便于我们理解和操作,我准备先从第一本书开始学习。

  今天就讲一讲这本书的第一章节:初探Java虚拟机

  1.理解Java虚拟机的原理

  所谓虚拟机,就是指一台虚拟的计算机,它其实是一个软件程序,用来执行一系列虚拟计算机的指令

  虚拟机可以分为系统虚拟机和程序虚拟机,VisualBox、VMWare就是典型的系统虚拟机,他可以允许一个完整的操作系统运行在其中,如windows、linux。程序虚拟机典型代表就是JVM(Java Vitual Machiine),它是专门为执行单个计算机程序而设定,在Java虚拟机中执行的指令我们成为字节码指令。

  Java语言的跨平台性:这里指的夸平台是指夸操作系统,Java程序在eclipse中先被编译成字节码文件即.class文件,然后将这些字节码文件加载到JVM中运行,由于JVM是可以在不同的操作系统上运行的,所以Java程序也就跨平台了。

  JVM虚拟机现在被大规模部署和应用的是Hotspot虚拟机--热点虚拟机,其他的如IBM正在使用的是一种J9虚拟机。

  2.JVM规范

  JVM是一个运行Java字节码的虚拟机,它有独立的运行机制,其运行的Java字节码也未必是由Java语言编译而成,向Groovy、Scala等语言生成的Java字节码也可以在JVM中运行。立足于JVM,可以产生各种各样的跨平台语言,除了语言规范不同之外,他们可以共享JVM带来的跨平台性、优秀的垃圾回收机制、以及可靠的即时编译

  即时编译器:当Java程序写好之后,前端的编译器如javac就会将其编译成字节码文件,然后JVM中的即时编译器就会将字节码文件编译成可以被指定处理器解读的程序,即时性体现在将加载到JVM中的.class字节码文件先解释成处理器可以理解的代码再进行运行。在任何平台上,即任何操作系统上,JVM的即时编译器都会将编译好的字节码文件解释成可以被特定处理器理解的指令,即所谓的“一次编译,处处运行”。

  3.整数在JVM中的表示

  在Java语言规范中,整数有四种byte、short、int、long,分别表示1、2、4、8个字节,一个字节代表8个二进制数,所以四种Java类型又对应8/16/32/64个二进制数据(含符号位)。这里说的二进制数据是编译好的字节码文件的数据在JVM中存储的形式

  Java语言中的整数在计算机(虚拟机也是)中存储的方式是其对应的二进制数据的补码。原码是整数对应的二进制数据,反码是符号位不变其余位取反的二进制表示,补码分两种,整数的补码就是其本身,负数的补码就是其反码加一

  浮点数在计算机和虚拟机中表示的方式,有一点复杂,暂时不讲。

  4.编译和调试虚拟机

  linux系统中进行编译和调试,暂时不讲。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JVM故障诊断性能优化是一本关于Java虚拟机(JVM)故障排除和性能优化的高清PDF。它涵盖了JVM的基本原理以及在实际应用中可能遇到的故障和性能问题的解决方法。 首先,本书介绍了JVM的结构和工作原理,包括内存管理、垃圾收集、线程管理等方面。读者可以了解JVM是如何执行Java程序并管理资源的。 其次,本书重点讲解了JVM故障排查的方法和工具。它介绍了常见的JVM故障类型,如内存溢出、线程死锁等,并提供了相应的解决方法。此外,本书还介绍了一些常用的JVM排查工具,如jstack、jmap等,以帮助读者更好地分析和定位故障。 最后,本书还介绍了JVM性能优化的基本原则和方法。它讲解了如何分析应用的性能瓶颈,并提出了相应的优化建议。读者可以学习到如何合理配置JVM参数、如何优化代码和算法等技巧,以提升应用的性能和响应速度。 总之,JVM故障诊断性能优化是一本帮助读者解决Java应用中JVM故障和性能问题的实用指南。无论是初学者还是有一定经验的开发者,都能从中学到宝贵的知识和技巧,进一步提升自己在JVM故障排查和性能优化方面的能力。 ### 回答2: 《高清JVM故障诊断性能优化》是一本介绍JVM故障诊断性能优化的书籍。JVM(Java虚拟机)是Java语言的核心组成部分,负责将Java程序转化为可以在不同平台上运行的字节码程序。本书主要针对JVM在实际运行过程中可能出现的故障进行了深入探讨,并提供了一些性能优化的方法和技巧。 首先,本书介绍了JVM的基本架构和原理,包括类加载器、运行时数据区和垃圾收集器等。读者可以通过了解这些基本概念,更好地理解JVM的工作方式,从而更好地进行故障诊断性能优化。 其次,本书介绍了一些常见的JVM故障现象和原因,比如内存溢出、死锁和线程问题等。对于每一种故障,书中都给出了具体的排查方法和解决方案,帮助读者快速解决实际中遇到的问题。 最后,本书重点介绍了JVM性能优化的方法和技巧。性能优化是一个复杂而庞大的工程,需要从多个方面入手,包括内存、线程和锁等。本书通过具体的案例分析和实践经验,向读者介绍了一些有效的性能优化方法,帮助读者提升程序的性能和响应速度。 总之,《高清JVM故障诊断性能优化》是一本全面介绍JVM故障诊断性能优化的书籍,对于深入了解JVM工作原理,解决JVM故障和优化JVM性能具有很大的帮助。无论是对于Java开发人员还是系统管理员来说,本书都是一本值得阅读的参考书目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值