第一章 走近java

1. java 技术体系:
java 程序设计语言
各种硬件平台上的java虚拟机
class 文件格式
java API 类库
来自商业机构或者开源机构的第三方java类库
jdk(java development kit):java程序设计语言、java虚拟机、java API类库,表示用于支持java开发的最小环境
jre(java runtime environment),java 运行时环境。
 
java me (mobile edition,移动版本)
java se (standard edition,标准版本)
java ee (enterprise edtion,企业版本)
 
2. java 发展史
java诞生于1995年,目前是全球使用范围最广的编程语言之一了。其他略。
java 虚拟机发展史
Sun classic/Exact VM:sun 公司发布的最原始的虚拟机,目前已经停用。
Sun hotspot VM:目前使用范围最广的虚拟机。最开始是一家名为 hotspot 的小公司开发的,因为表现优异,后被sun公司收购。
其他VM:包括 sun mobile embedded VM/meta circular VM、BEA JRokit VM 等等。
 
3. java技术的未来:
模块化:这个目前已经在java11 中实现
混合语言: 越来越多的语言可以跑在jvm之上。
多核并行
更加丰富的语法,比如除了面向对象之外,融入其他的编程范式,比如函数式编程等。
64位虚拟机
自己亲自动手编译jdk(略)
 
 
第二章 java内存区域与内存溢出异常
 
1. java虚拟机实现了动态内存分配与垃圾回收机制,所以大大减轻了程序员的负担,不用像c/c++ 那样小心、手动地管理内存。但是这样也限制了程序员的自由,以及封装了底层细节,在jvm发生内存溢出或者内存泄漏时,如果不了解jvm内部是如何管理内存的,排查错误就会变得非常困难。
  • 运行时数据区域

  • 程序计数器
较小的内存空间,当前线程所执行字节码的行号指示器,是线程私有的。
  • java 虚拟机栈
线程私有,生命周期与线程相同,描述java方法执行的内存模型,每个方法执行时都会创建一个帧栈,用于存储局部变量表、操作数栈、动态链接等。局部变量表存放了编译期的各种基本数据类型、对象引用以及returnAddress(指向了一条字节码指令的地址)。这个区域可以抛出StackOverFlow 与 Out Of Memory 两种异常。
 
  • 本地方法栈
java虚拟机栈为 java 方法(字节码)服务,本地方法栈为native 方法服务。
 
  • java堆
java虚拟机管理内存中最大的一块,被所有线程共享的内存区域,几乎所有的对象实例分配内存都是在这里进行的。java堆是垃圾回收发生的主要区域。

深入理解java虚拟机---读书笔记的更多相关文章

  1. 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域

    深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...

  2. 【Todo】深入理解Java虚拟机 读书笔记

    有一个在线系列地址 <深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)> http://book.2cto.com/201306/25426.html 已经下载了这本书(60多M ...

  3. 深入理解Java虚拟机读书笔记5----虚拟机字节码执行引擎

    五 虚拟机字节码执行引擎   1 运行时栈帧结构     ---栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈的栈元素.     ---栈帧中存储了方法的局部变 ...

  4. 深入理解Java虚拟机读书笔记8----Java内存模型与线程

    八 Java内存模型与线程   1 Java内存模型     ---主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.     ---此处的变量和J ...

  5. 深入理解Java虚拟机读书笔记7----晚期(运行期)优化

    七 晚期(运行期)优化 1 即时编译器(JIT编译器)     ---当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”,包括被多次调用的方法和被多次执行的循环体.     ...

  6. 深入理解Java虚拟机读书笔记4----虚拟机类加载机制

    四 虚拟机类加载机制 1 类加载机制     ---概念:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型.     -- ...

  7. 深入理解Java虚拟机读书笔记3----类文件结构

    三 类文件结构 1 Java虚拟机的两种中立特性     · 平台无关性     · 语言无关性     实现平台无关性和语言无关性的基础是虚拟机和字节码存储格式(Class文件).   2 Clas ...

  8. 深入理解Java虚拟机读书笔记1----Java内存区域与HotSpot虚拟机对象

    一 Java内存区域与HotSpot虚拟机对象 1 Java技术体系.JDK.JRE?     Java技术体系包括:         · Java程序设计语言:         · 各种硬件平台上的 ...

  9. 深入理解java虚拟机读书笔记--java内存区域和管理

    第二章:Java内存区域和内存溢出异常 2.2运行时数据区域 运行时数据区分为方法区,堆,虚拟机栈,本地方法栈,程序计数器 方法区和堆是线程共享的区域 虚拟机栈,本地方法栈,程序计数器是数据隔离的数据 ...

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

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

随机推荐

  1. 5.7 zip 版本的安装 以及遇到的坑

    https://blog.csdn.net/indexman/article/details/80291537 https://blog.csdn.net/weidong_y/article/deta ...

  2. C指针的运算

    指针的运算在数组中才有意义 int *p; p++,一定是在一片连续的区域才有意义,当然越界也会带来诸多问题. void main() { ; int *p = &num;//这根本无界可言 ...

  3. Material icons 全图标一览

    Material icons 全图标一览 2018年12月17日 16:52:55 boywcx 阅读数 3090   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...

  4. VS2012 Update 2: 0x80040154 corrupt install when starting the debugger

    使用VS2012開發console program ,发现生成32位的exe文件在別的机上不能正确运行,有文章說update1可以解決這個問題,如下 Setup.exe is not a valid ...

  5. trie树的应用;

    链接:https://ac.nowcoder.com/acm/contest/920/B来源:牛客网 定义一张图的生成链是原图的一棵生成树,且这棵树退化成一条链.我们称一条生成链是原图的最小生成链,当 ...

  6. Spring注解驱动——组件注册系列

    1.@Configuration 从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被Annot ...

  7. speech-to-text-wavenet

    docker pull buriburisuri/speech-to-text-wavenet docker run -it buriburisuri/speech-to-text-wavenet p ...

  8. CF1197C

    CF1197C 题意: 有一个递增的数列,把它分成k段,找到这样的分段方法,即每段最大值减最小值的和最小 解法: 分成k段,即要加k-1个隔断,这k-1个隔断,能隔开差值最大的几个,那最后得到分隔后的 ...

  9. [BJOI2019]光线——递推

    题目链接: [BJOI2019]光线 设$F_{i}$表示从第$1$面玻璃上面向下射入一单位光线,穿过前$i$面玻璃的透光率. 设$G_{i}$表示从第$i$面玻璃下面向上射入一单位光线,穿过前$i$ ...

  10. DML:增、删、改表中数据

    1. 添加数据 (1) 常规添加 INSERT INTO 表名(列名,列名,列名) VALUES(值,值,值); (2) 简化添加 INSERT INTO 表名 VALUES(值,值,值); 规则: ...