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


    第一章 走近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堆是垃圾回收发生的主要区域。

  • 相关阅读:
    开篇有益-解析微软微服务架构eShopOnContainers(一)
    复杂而艰辛的重构之路--起步
    Visual Studio 我的插件
    【翻译】使用Visual Studio创建Asp.Net Core MVC (一)
    【翻译】使用Visual Studio在Azure上部署Asp.Net Core Web应用
    【翻译】在Visual Studio中使用Asp.Net Core MVC创建第一个Web Api应用(二)
    【翻译】在Visual Studio中使用Asp.Net Core MVC创建你的第一个Web API应用(一)
    【翻译】在Mac上使用VSCode创建你的第一个Asp.Net Core应用
    【翻译】Asp.net Core介绍
    新的一年订个小目标,比如每周更新1-2篇博文
  • 原文地址:https://www.cnblogs.com/lyrichu/p/11192578.html
Copyright © 2020-2023  润新知