《深入理解java虚拟机》一些笔记

     2022-03-19     800

关键词:

大三下学期刚考完,把一个商城项目匆匆做完了,开始捧起这本书,但是感觉内容繁多,为了便于以后复习,这里总结一些笔记,大部分都是直接copy书上的,这本书还没看完也不知道自己能看到哪里,慢慢看吧

第一章  走进java

1.java优点:1)它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想 。 2)提供了一个相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题。3)实现了热点代码和运行时的编译和优化 4)有一套完整的应用程序接口,还有无数来自商业机构和开源社区的第三方类库来帮助它实现各种各样的功能。。。

2.我们可以吧Java程序设计语言、java虚拟机、JavaAPI类库这三部分统称为JDK(java development kit) ,JDK是用于支持java程序开发的最小环境,另外把javaAPI类库中的 javase API子集和java虚拟机这两部分统称为jre(java runtime environment)jre是支持java程序运行的标准环境

3.java技术分为四个平台分别为:1) javaCard 支持一些java小程序在小设备上运行的平台。2) java ME(Micro Edition)支持java运行在移动终端平台 3)javaSE (standard Edition) 支持面向桌面的应用,提供了java核心API,这个版本以前成为J2SE 4)javaEE(Enterprise Edition)支持使用多层架构的企业应用(如ERP(企业资源计划)、CRM(客户关系管理))的java平台,除了提供Java SE API以外,还对其做了大量的扩充并提供了部署支持

4.java发展史:

  JDK1.1 技术代表:JAR文件格式、JDBC、JavaBeans 、RMI ,java语法得到了发展如内部类和反射

  JDK1.2 技术代表:EJB、Java Plug-in、Java IDL、Swing ,在语言API上java添加了strictfp关键字和Collections集合类

  JDK1.3 改进主要体现在一些类库上(如数学运算和新的Timer API) JNDI服务从1.3开始被作为一项平台及服务提供(原来仅仅是一个扩展)

  JDK1.4 这是java真正走向成熟的一个版本 技术代表:正则表达式、异常链、NIO、日志类、XML解析和XSLT转换器

  JDK1.5 语法易用性进行了改进:自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环*(foreach),改进了java内存模型(JMM)提供了java.util.concurrent并发包,并且这是官方声明可以支持WINDOWS9x平台最后一个版本

  JDK1.6 提供动态语言支持、提供编译API和微型HTTP服务API,同时这个版本对java虚拟机内部做了很大改进,包括锁与同步、垃圾收集、类加载方便的算法都有改动

  JDK1.7 Lambda表达式 Jigsaw项目、动态语言支持、GarbageFirst收集器和Coin项目

  JDK1.8 书上是在1.8以前出版的,详细看http://blog.csdn.net/laliocat/article/details/50866609

5.Java技术的未来1)模块化 2)混合语言 3)多核并行 4)进一步丰富语法 5)64位虚拟机

第二章 Java内存区域与内存溢出异常

1. 程序计数器是一块较小的内存空间,在虚拟机概念模型里,字节码解释器工作就是通过改变这个计数器来取得需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等

2.java虚拟机栈  线程私有  描述的是java方法执行的内存模型,每个方法在执行会创建一个栈帧 用于存储局部变量表、操作数栈、动态链接、方法出口等信息 ,局部变量表存放各种基本数据类型、对象引用

3. StackOverFlowError:线程请求的栈深度大于虚拟机所允许的深度   OutOfMemoryError 如果虚拟机栈动态扩展是无法申请足够的内存

4.本地方法栈为虚拟机使用的Native方法服务

5.Java堆  线程共享 GC管理主要区域  主要存放对象实例  。java堆可以处于物理不连续的,但是要逻辑连续

6.方法区: 线程共享 存储被虚拟机加载的类信息、常量、静态变量、即时编译后的代码

7.运行常量池:用于存放编译期间生成的各种字面量符号的引用

8.直接内存:并不是虚拟机运行是数据区的部分,也不是java虚拟机规范定义的内存区域。

9.对象的创建:new 关键字——检查指令参数能否在常量池定位到一个符号类——执行相应的类加载过程——虚拟机为新生对象分配内(两种方法:指针碰撞和空闲列表)——虚拟机对对象进行必要的设置——产生新对象

10.对象访问方式主要有句柄(refernce中储存稳定地址)和直接指针(访问速度快 )

 

    

 

《深入理解jvm虚拟机》读书笔记

前言:《深入理解JVM虚拟机》是JAVA的经典著作之一,因为内容更偏向底层,比较枯燥难啃,所以之前一直没有好好的阅读过。最近因为刚好有空,又有了新目标。所以打算和《构架师的12项修炼》一起看,这样荤素搭配,吃饭不... 查看详情

深入理解java虚拟机读书笔记1--java内存区域

  Java在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途、创建和销毁的时间,有一些是随虚拟机的启动而创建,随虚拟机的退出而销毁,有些则是与线程一一对应,随线程的... 查看详情

《深入理解java虚拟机》读后笔记-垃圾收集算法

文章目录《深入理解Java虚拟机》读后笔记-垃圾收集算法1.概述2.如何判断对象已死?2.1引用计数算法2.2可达性分析算法2.3Java中的引用2.4回收方法区3.垃圾收集算法3.1分代收集理论3.2标记-清除算法3.3标记-复制算法3.4标记-整理... 查看详情

深入理解java虚拟机读书笔记三

深入理解Java虚拟机第三章内存管理读书笔记垃圾回收需要解决的三个问题是:哪些内存需要回收何时回收如何回收哪些内存需要回收对于Java内存运行时区域,程序计数器\虚拟机栈\本地方法栈三个部分是线程私有的,随线程而生,随... 查看详情

深入理解jvm读书笔记三:虚拟机类加载机制

Java虚拟机类加载机制是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。7.1概述与那些在编译时需要进行链接工作的语言不同,在Java语言里面,... 查看详情

《深入理解java虚拟机-jvm高级特性与最佳实践(第三版)》阅读笔记

《深入理解Java虚拟机》阅读笔记本repository为《深入理解Java虚拟机-Jvm高级特性与最佳实践(第三版)》阅读笔记,因为第一章主要讲的是Java的发展历史,这里就不做笔记,直接从第2章的"Java内存区域与内... 查看详情

《深入理解java虚拟机-第3版》学习笔记,一文涵盖全书精髓

前言大家好~之前做好书推荐时,给大家分享过《深入理解Java虚拟机》这本书。我们先来看一下《深入理解Java虚拟机》(第3版)的豆瓣评分。《深入理解Java虚拟机》这本书相信大家都看过吧,说是每位Javaer必看... 查看详情

深入理解java虚拟机阅读笔记

 1、程序计数器-占用空间:较小作用:字节码行号指示器作用详情:指示指令执行,如(字节码的执行,分支,循环,跳转,异常处理,线程恢复)特点:线程私有(每个计数器独立计算,上下文相互独立)。2、虚拟机栈占... 查看详情

深入理解java虚拟机-读书笔记(代码片段)

第1章走近Java第2章Java内存区域与内存溢出异常第3章垃圾回收器与内存分配策略第4章虚拟机性能监控与故障处理工具第1章走近JavaJava程序设计语言、Java虚拟机、JavaAPI类库统称为JDK。Java技术体系分为4个平台:JavaCard:Apple... 查看详情

《深入理解java虚拟机》读书笔记:晚期(运行期)优化

文章目录正文一、HotSpot虚拟机内的即时编译器1、解释器与编译器(1)解释器、编译器(2)C1、C2编译器(3)混合模式、解释模式与编译模式(4)分层编译2、编译对象与触发条件(1)热点... 查看详情

深入理解java虚拟机读书笔记---运行时数据区域

运行时数据区域1.程序计数器   程序计数器(ProgramCounterRegister)是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行... 查看详情

读书笔记-深入理解jvm虚拟机-1.oom初探

Java堆OOM(Out-Of-Memory)异常执行例如以下程序,爆出异常java.lang.OutOfMemoryError:Javaheapspace/***VMArgs:-Xms20m-Xmx20m-XX:+HeapDumpOnOutOfMemoryError*@authorzzm*/publicclassHeapOOM{ staticclassOOMObject{ } publicsta 查看详情

深入理解jvm虚拟机读书笔记——类的加载机制(代码片段)

注:本文参考自周志明老师的著作《深入理解Java虚拟机(第3版)》,相关电子书可以关注WX公众号,回复001获取。Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化&#... 查看详情

深入理解jvm虚拟机读书笔记——类的加载机制(代码片段)

注:本文参考自周志明老师的著作《深入理解Java虚拟机(第3版)》,相关电子书可以关注WX公众号,回复001获取。Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化&#... 查看详情

《深入理解java虚拟机》读后笔记-hotspot虚拟机对象探秘(代码片段)

文章目录《深入理解Java虚拟机》读后笔记-HotSpot虚拟机对象探秘1.对象的创建2.对象的内存布局2.1对象头2.2实例数据2.3对齐填充3.对象的访问定位《深入理解Java虚拟机》读后笔记-HotSpot虚拟机对象探秘基于实用优先的原则,这... 查看详情

深入理解jvm虚拟机读书笔记——运行时数据区(代码片段)

注:本文参考自周志明老师的著作《深入理解Java虚拟机(第3版)》,相关电子书可以关注WX公众号,回复001获取。跨平台性是Java语言的重要特性,而这一特性本质上就是通过JVM虚拟机来实现的。下面就来... 查看详情

深入理解jvm虚拟机读书笔记——运行时数据区(代码片段)

注:本文参考自周志明老师的著作《深入理解Java虚拟机(第3版)》跨平台性是Java语言的重要特性,而这一特性本质上就是通过JVM虚拟机来实现的。下面就来通过深入学习JVM来进一步增加我们对Java这门编程语言的... 查看详情

深入理解jvm虚拟机读书笔记——锁优化(代码片段)

注:本文参考自周志明老师的著作《深入理解Java虚拟机(第3版)》,相关电子书可以关注WX公众号:兴趣使然的草帽路飞,回复001获取。1.Java语言中的线程安全按照线程安全的“安全程度”由强至弱来排... 查看详情