<commit_before>---
layout: post
title: 深入JVM读书笔记
category: java
tags: [java]
no-post-nav: true
---
今年买了本深入java虚拟机的书来学习，由于工作时间，只读了一半，争取后续读完，顺便贴一下自己的读书笔记。

#### 一、JVM介绍

```
Classic VM：第一代虚拟机
Exact VM：生命周期短
Sun HotSpot VM：目前最广的虚拟机
JRockit VM：BEA公司开发，速度快（后期与HotSpot融合）
Dalvik VM：Android平台的虚拟机（没有遵循虚拟机规范）
```


#### 二、内存管理
##### 1.JAVA内存区域

1.1.程序计数器：记录线程所执行的字节码的行号指示器。（对于native方法为空）

1.2.Java虚拟机栈：方法执行创建栈帧（局部变量表（编译期间就知道分配多大内存），操作数栈，动态链接，方法出口等）用于入栈出栈，局部变量表：存放基本数据类型，对象引用。(long和double占用2个局部变量空间)。如果栈深度大于虚拟机运行的深度，StackOverflowError,无法申请足够的内存OutOfMemoryError(线程私有)

1.3.本地方法栈：与JAVA虚拟机栈相似，为了执行native方法服务。

1.4.Java堆：线程共享，虚拟机启动时创建，存放对象实例和数组（类的成员变量）（堆还能细分：新生代，老年代等），堆没有内存可扩展OutOfMemoryError

1.5.方法区：线程共享，存储被虚拟机加载的类信息， 常量，静态变量，即时编译器编译后的代码等（方法区：垃圾回收低，但也是有回收的必要）OutOfMemoryError（线程共享）<commit_msg>add jvm<commit_after>---
layout: post
title: 深入JVM读书笔记
category: Java
tags: [Java,虚拟机]
no-post-nav: true
---
今年买了本深入java虚拟机的书来学习，由于工作时间，只读了一半，争取后续读完，顺便贴一下自己的读书笔记。

#### 一、JVM介绍

```
Classic VM：第一代虚拟机
Exact VM：生命周期短
Sun HotSpot VM：目前最广的虚拟机
JRockit VM：BEA公司开发，速度快（后期与HotSpot融合）
Dalvik VM：Android平台的虚拟机（没有遵循虚拟机规范）
```


#### 二、内存管理
##### 1.JAVA内存区域

1.1.程序计数器：记录线程所执行的字节码的行号指示器。（对于native方法为空）

1.2.Java虚拟机栈：方法执行创建栈帧（局部变量表（编译期间就知道分配多大内存），操作数栈，动态链接，方法出口等）用于入栈出栈，局部变量表：存放基本数据类型，对象引用。(long和double占用2个局部变量空间)。如果栈深度大于虚拟机运行的深度，StackOverflowError,无法申请足够的内存OutOfMemoryError(线程私有)

1.3.本地方法栈：与JAVA虚拟机栈相似，为了执行native方法服务。

1.4.Java堆：线程共享，虚拟机启动时创建，存放对象实例和数组（类的成员变量）（堆还能细分：新生代，老年代等），堆没有内存可扩展OutOfMemoryError

1.5.方法区：线程共享，存储被虚拟机加载的类信息， 常量，静态变量，即时编译器编译后的代码等（方法区：垃圾回收低，但也是有回收的必要）OutOfMemoryError（线程共享）
{'fraction_non_alphanumeric': 0.14367816091954022, 'fraction_numerical': 0.01532567049808429, 'mean_word_length': 10.871212121212121, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '357554', 'n_tokens_mistral': 1187, 'n_tokens_neox': 1427, 'n_words': 64}