`

《深入理解java虚拟机》第二章 读书笔记

 
阅读更多

书籍的第一章讲的都是java的历史,没什么重点,略去

 这一章主要讲java内存区域与内存溢出异常

1 运行时数据区域

   1)程序计数器--当前线程所执行的字节码的行号指示器,每个线程都有自己的程序计数器,此内存区域时唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域

   2)java虚拟机栈--线程私有,生命周期与线程同步,它描述的时java方法执行的内存模型:每个方法在执行的同时,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链表,方法出口等信息。如果线程请求深度大于虚拟机所允许的深度----StackOverflowError,如果扩展时无法申请到足够内存--OutOfMemoryError,通过-Xss参数来设定。

  3)本地方法栈---为虚拟机使用到的Native方法服务,通过-Xss参数来设定。

  4)java堆--所有对象实例以及数组都要在堆上分配,细分有新生代,老年代。再细分有Eden空间,From Survivor空间,To Survivor空间等。通过-Xmx和-Xms控制。

  5)方法区--存储已被虚拟机加载的类信息,常量,静态变量,即时编译器后的代码等数据,或者成为永久代(Permanment Generation),-XX:PermSize和-XX:MaxPermSize来限制方法区大小。

  6)运行区常量池--是方法区的一部分。

  7)直接内存--  -XX:MaxDirectMemorySize,默认与-Xmx一样。

分享到:
评论

相关推荐

    读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践第二章笔记.zip

    读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践第二章笔记

    深入理解Java虚拟机.xmind

    自己看《深入理解Java虚拟机》(第二版)所做的一些笔记。因为个人水平有限,能够理解的也只有前面几章的内容,后面的内容觉得看了也不是很理解,就没有记在里面。希望能对大家有所帮助,也希望能和大家一起进步。

    深入java虚拟机笔记

    #### 第二章 平台无关 - **平台无关的概念**:Java的设计初衷是为了实现“一次编写,到处运行”的理念,即通过Java虚拟机使得Java程序可以在任何安装了JVM的操作系统上运行。 - **Java平台**:Java平台由Java...

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

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

    java第一章笔记

    6. **跨平台性**:Java的一个重要特性就是“编写一次,到处运行”(Write Once Run Anywhere, WORA),这得益于Java的运行机制——Java程序被编译成字节码(Bytecode),然后由Java虚拟机(JVM)解释执行。...

    《java程序设计习题集》读书笔记上册

    #### 第二章:Java语言特性 1. **标识符规则** - Java标识符区分大小写。 - 标识符可以由字母、数字、下划线(_)和美元符号($)组成,但不能以数字开头。 2. **字符类型** - Java采用双字节字符表示法,即`...

    java学习笔记

    #### 第二章:Java基本类型变量 ##### 变量定义 - **变量**:用来存储数据的容器。 - **声明与初始化**: - 必须声明变量类型和名称。 - 可以在声明时初始化变量,也可以之后进行初始化,但必须在使用前完成。 ...

    《疯狂Android讲义》02章读书笔记(含源码)

    《疯狂Android讲义》是Android开发领域的一本经典著作,其第二章主要...通过阅读《疯狂Android讲义》第二章并实践其中的源码,开发者可以全面掌握Android开发的基本概念和技能,为进一步深入学习和实际开发奠定基础。

    java博客笔记源码

    这个压缩包包含了从第1章到第6章的Java编程笔记的源代码,旨在帮助读者深入理解Java语言的基本概念、语法和常用技术。在本文中,我们将详细探讨这些章节可能涵盖的关键知识点。 1. **Java简介** - Java的历史和...

    Java_se基础毕向东老师全程笔记

    ### 第二章:数组 - **定义**:一组有序元素的集合。 - **初始化**:创建数组并为元素赋值。 - **访问**:通过索引访问数组元素。 - **遍历**:使用循环结构遍历数组。 ### 第三章:面向对象程序开发 - **封装**:...

    java学习笔记.pdf

    #### 第二章:标识符、关键字和数据类型 - **1.8 标识符和关键字** - **标识符**:用于命名变量、方法、类等的名称。 - **关键字**:Java语言中具有特定含义的单词。 - **1.9 Java语言基本数据类型** Java的...

    java学习笔记课后选择答案整理.doc

    进入第二章,关于Java程序的编写和执行,我们看到几个例子。第1题的程序代码是正确的Java主类,所以执行时会显示"Hello World",答案是A。第2题的主方法签名拼写错误,导致编译失败,答案是D。第3题缺少主方法的参数...

    java私塾学习笔记整理

    #### 第二章:基础语法 **一、关键字** Java中有53个关键字,如`public`、`private`、`protected`、`static`、`final`等,用于声明类、变量、方法等。 **二、标识符** 1. **命名规则**: - 由字母、数字、...

    毕向东Java SE视频教程整理笔记

    #### 第二章:数组 - **数组定义**:数组是Java中用来存储固定数量的同类型元素的容器。数组的元素可以通过索引访问,索引从0开始。 - **数组初始化**:数组可以通过显式初始化或动态初始化的方式创建。显式初始化...

    传智播客Java_SE基础毕向东老师全程笔记

    #### 第二章:数组 数组是存储相同类型数据的连续内存区域,本章节深入讲解了数组的声明、初始化与访问方式。通过实例,读者可以掌握如何创建数组、为数组元素赋值以及遍历数组,理解数组索引的概念与使用。 #### ...

    毕向东_Java基础课堂笔记.pdf

    #### 第二章 数组 - 数组是用于存储固定大小的同类型元素的数据结构。 - 数组支持索引访问,可以快速定位到特定元素。 - Java中的数组通过索引访问,索引从0开始。 #### 第三章 面向对象程序开发 - 面向对象编程...

    传智播客Java SE基础毕向东老师全程笔记

    #### 第二章:数组 - **数组的概念:** 数组是一种基本的数据结构,用于存储同类型的多个元素。 - **数组的声明与初始化:** 如 `int[] arr = new int[5];`。 - **数组的访问与操作:** 可以通过索引访问和修改数组...

    java学习笔记课后选择答案整理参考.pdf

    第二章涉及的是Java程序的编写和执行: 1. 当一个Java源文件中包含正确的主类(含有`public static void main(String[] args)`方法)时,如示例1所示,执行将显示"Hello World"(问题1,答案A)。 2. 如果主类名与...

Global site tag (gtag.js) - Google Analytics