第一章 走近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. 深入了解jQuery之链式结构

    本文是在阅读了Aaron艾伦的jQuery源码解析(地址:http://www.imooc.com/learn/172)后的个人体会以及笔记.在这里感谢艾伦老师深入浅出的讲解!! 1 什么是链式? 先 ...

  2. flutter 编译报错 ../extended_network_image_provider.dart:63:41: Error: Type 'DecoderCallback' not found

    flutter 编译的时候报错 Compiler message:../../../.pub-cache/hosted/pub.dartlang.org/extended_image_library- ...

  3. 通过AOP拦截打印日志,出入参数

    import java.lang.reflect.Modifier; import javassist.ClassClassPath; import javassist.ClassPool; impo ...

  4. DisplayModeProvider完成移动开发自动视图解析

    MVC中新建视图命名:XXX.cshtml.XXX.mobile.cshtml:用手机访问会自动到xxx.mobile.cshtml 一.原理 MVC中是通过DisplayModeProvider实现 ...

  5. Appium自动化测试教程-自学网-adb命令

    adb命令: adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调试应用. T ...

  6. php注意事项|要点

    1. 用单引号代替双引号来包含字符串,这样做会更快一些.因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会,注意:只有 echo 能这么做,它是一种可以把多个字符 串当作参数的“函数”(译 ...

  7. MySQL 中Redo与Binlog顺序一致性问题

    首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的.而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的.现在我们来讨论一下My ...

  8. 【概率论】4-6:协方差和相关性(Covariance and Correlation)

    title: [概率论]4-6:协方差和相关性(Covariance and Correlation) categories: - Mathematic - Probability keywords: ...

  9. centos7初始化脚本(转)

    #!/bin/bash # 描述: CentOS 初始化脚本 # 加载配置文件 if [ -n "${1}" ];then /bin/} fi # 可接受配置(shell 变量格式 ...

  10. Android studio 导入项目报 Error:Cause: peer not authenticated 异常

    修改build.gradle文件(project级的) 一.dependencies { classpath 'com.android.tools.build:gradle:1.0.1'}将class ...