1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-20 22:17:09 +08:00

修改几个错别字

修改几个错别字
This commit is contained in:
靳阳 2018-11-05 21:26:09 +08:00 committed by GitHub
parent 0061f4eee8
commit 33f2830a58
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -22,7 +22,7 @@
## 2 运行时数据区域 ## 2 运行时数据区域
Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。 Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。
![运行时数据区域](https://user-gold-cdn.xitu.io/2018/4/27/16306a34cd8a4354?w=513&h=404&f=png&s=132068) ![运行时数据区域](https://user-gold-cdn.xitu.io/2018/4/27/16306a34cd8a4354?w=513&h=404&f=png&s=132068)
这些组成部分一些线程私有的,其他的则是线程共享的。 这些组成部分一些线程私有的,其他的则是线程共享的。
**线程私有的:** **线程私有的:**
@ -75,7 +75,7 @@ Java 虚拟机栈也是线程私有的每个线程都有各自的Java虚拟
### 2.4 堆 ### 2.4 堆
Java 虚拟机所管理的内存中最大的一块Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。**此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。** Java 虚拟机所管理的内存中最大的一块Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。**此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。**
Java 堆是垃圾收集器管理的主要区域,因此也被称作**GC堆Garbage Collected Heap**.从垃圾回收的角度由于现在收集器基本都采用分代垃圾收集算法所以Java堆还可以细分为新生代和老年代细致一点有Eden空间、From Survivor、To Survivor空间等。**进一步划分的目的是更好地回收内存,或者更快地分配内存。** Java 堆是垃圾收集器管理的主要区域,因此也被称作**GC堆Garbage Collected Heap**.从垃圾回收的角度由于现在收集器基本都采用分代垃圾收集算法所以Java堆还可以细分为新生代和老年代细致一点有Eden空间、From Survivor、To Survivor空间等。**进一步划分的目的是更好地回收内存,或者更快地分配内存。**
![](https://user-gold-cdn.xitu.io/2018/8/25/16570344a29c3433?w=599&h=250&f=png&s=8946) ![](https://user-gold-cdn.xitu.io/2018/8/25/16570344a29c3433?w=599&h=250&f=png&s=8946)
@ -159,9 +159,9 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
### 3.2 对象的内存布局 ### 3.2 对象的内存布局
在 Hotspot 虚拟机中对象在内存中的布局可以分为3区域:**对象头**、**实例数据**和**对齐填充**。 在 Hotspot 虚拟机中对象在内存中的布局可以分为3区域:**对象头**、**实例数据**和**对齐填充**。
**Hotspot虚拟机的对象头包括两部分信息****第一部分用于存储对象自身的自身运行时数据**(哈希、GC分代年龄、锁状态标志等等**另一部分是类型指针**,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。 **Hotspot虚拟机的对象头包括两部分信息****第一部分用于存储对象自身的自身运行时数据**(哈希、GC分代年龄、锁状态标志等等**另一部分是类型指针**,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。
**实例数据部分是对象真正存储的有效信息**,也是在程序中所定义的各种类型的字段内容。 **实例数据部分是对象真正存储的有效信息**,也是在程序中所定义的各种类型的字段内容。
@ -173,7 +173,7 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
1. **句柄:** 如果使用句柄的话那么Java堆中将会划分出一块内存来作为句柄池reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息; 1. **句柄:** 如果使用句柄的话那么Java堆中将会划分出一块内存来作为句柄池reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息;
![使用句柄](https://user-gold-cdn.xitu.io/2018/4/27/16306b9573968946?w=786&h=362&f=png&s=109201) ![使用句柄](https://user-gold-cdn.xitu.io/2018/4/27/16306b9573968946?w=786&h=362&f=png&s=109201)
2. **直接指针:** 如果使用直接指针访问,那么 Java 堆对的布局中就必须考虑如何放置访问类型数据的相关信息而reference 中存储的直接就是对象的地址。 2. **直接指针:** 如果使用直接指针访问,那么 Java 堆对的布局中就必须考虑如何放置访问类型数据的相关信息而reference 中存储的直接就是对象的地址。
![使用直接指针](https://user-gold-cdn.xitu.io/2018/4/27/16306ba3a41b6b65?w=766&h=353&f=png&s=99172) ![使用直接指针](https://user-gold-cdn.xitu.io/2018/4/27/16306ba3a41b6b65?w=766&h=353&f=png&s=99172)
@ -203,7 +203,7 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
**2 String 类型的常量池比较特殊。它的主要使用方法有两种:** **2 String 类型的常量池比较特殊。它的主要使用方法有两种:**
- 直接使用双引号声明出来的 String 对象会直接存储在常量池中。 - 直接使用双引号声明出来的 String 对象会直接存储在常量池中。
- 如果不是用双引号声明的 String 对象,可以使用 String 提供的 intern 方String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。 - 如果不是用双引号声明的 String 对象,可以使用 String 提供的 intern 方法。String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。
```java ```java
String s1 = new String("计算机"); String s1 = new String("计算机");
@ -211,7 +211,7 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
String s3 = "计算机"; String s3 = "计算机";
System.out.println(s2);//计算机 System.out.println(s2);//计算机
System.out.println(s1 == s2);//false因为一个是堆内存中的String对象一个是常量池中的String对象 System.out.println(s1 == s2);//false因为一个是堆内存中的String对象一个是常量池中的String对象
System.out.println(s3 == s2);//true因为两个都是常量池中的String对 System.out.println(s3 == s2);//true因为两个都是常量池中的String对
``` ```
**3 String 字符串拼接** **3 String 字符串拼接**
```java ```java