Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 33f2830

Browse files
修改几个错别字
修改几个错别字
1 parent 0061f4e commit 33f2830

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

‎Java相关/可能是把Java内存区域讲的最清楚的一篇文章.md‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
## 2 运行时数据区域
2323
Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域。
2424
![运行时数据区域](https://user-gold-cdn.xitu.io/2018/4/27/16306a34cd8a4354?w=513&h=404&f=png&s=132068)
25-
这些组成部分一些事线程私有的,其他的则是线程共享的。
25+
这些组成部分一些是线程私有的,其他的则是线程共享的。
2626

2727
**线程私有的:**
2828

@@ -75,7 +75,7 @@ Java 虚拟机栈也是线程私有的,每个线程都有各自的Java虚拟
7575
### 2.4 堆
7676
Java 虚拟机所管理的内存中最大的一块,Java 堆是所有线程共享的一块内存区域,在虚拟机启动时创建。**此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例以及数组都在这里分配内存。**
7777

78-
Java 堆是垃圾收集器管理的主要区域,因此也被称作**GC堆(Garbage Collected Heap)**.从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以Java堆还可以细分为:新生代和老年代:在细致一点有:Eden空间、From Survivor、To Survivor空间等。**进一步划分的目的是更好地回收内存,或者更快地分配内存。**
78+
Java 堆是垃圾收集器管理的主要区域,因此也被称作**GC堆(Garbage Collected Heap)**.从垃圾回收的角度,由于现在收集器基本都采用分代垃圾收集算法,所以Java堆还可以细分为:新生代和老年代:再细致一点有:Eden空间、From Survivor、To Survivor空间等。**进一步划分的目的是更好地回收内存,或者更快地分配内存。**
7979

8080
![](https://user-gold-cdn.xitu.io/2018/8/25/16570344a29c3433?w=599&h=250&f=png&s=8946)
8181

@@ -159,9 +159,9 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
159159

160160
### 3.2 对象的内存布局
161161

162-
在 Hotspot 虚拟机中,对象在内存中的布局可以分为3快区域:**对象头****实例数据****对齐填充**
162+
在 Hotspot 虚拟机中,对象在内存中的布局可以分为3块区域:**对象头****实例数据****对齐填充**
163163

164-
**Hotspot虚拟机的对象头包括两部分信息**,**第一部分用于存储对象自身的自身运行时数据**(哈希吗、GC分代年龄、锁状态标志等等),**另一部分是类型指针**,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。
164+
**Hotspot虚拟机的对象头包括两部分信息**,**第一部分用于存储对象自身的自身运行时数据**(哈希码、GC分代年龄、锁状态标志等等),**另一部分是类型指针**,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。
165165

166166
**实例数据部分是对象真正存储的有效信息**,也是在程序中所定义的各种类型的字段内容。
167167

@@ -173,7 +173,7 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
173173
1. **句柄:** 如果使用句柄的话,那么Java堆中将会划分出一块内存来作为句柄池,reference 中存储的就是对象的句柄地址,而句柄中包含了对象实例数据与类型数据各自的具体地址信息;
174174
![使用句柄](https://user-gold-cdn.xitu.io/2018/4/27/16306b9573968946?w=786&h=362&f=png&s=109201)
175175

176-
2. **直接指针:** 如果使用直接指针访问,那么 Java 堆对像的布局中就必须考虑如何放置访问类型数据的相关信息,而reference 中存储的直接就是对象的地址。
176+
2. **直接指针:** 如果使用直接指针访问,那么 Java 堆对象的布局中就必须考虑如何放置访问类型数据的相关信息,而reference 中存储的直接就是对象的地址。
177177

178178
![使用直接指针](https://user-gold-cdn.xitu.io/2018/4/27/16306ba3a41b6b65?w=766&h=353&f=png&s=99172)
179179

@@ -203,15 +203,15 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
203203
**2 String 类型的常量池比较特殊。它的主要使用方法有两种:**
204204

205205
- 直接使用双引号声明出来的 String 对象会直接存储在常量池中。
206-
- 如果不是用双引号声明的 String 对象,可以使用 String 提供的 intern 方String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。
206+
- 如果不是用双引号声明的 String 对象,可以使用 String 提供的 intern 方法。String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。
207207

208208
```java
209209
String s1 = new String("计算机");
210210
String s2 = s1.intern();
211211
String s3 = "计算机";
212212
System.out.println(s2);//计算机
213213
System.out.println(s1 == s2);//false,因为一个是堆内存中的String对象一个是常量池中的String对象,
214-
System.out.println(s3 == s2);//true,因为两个都是常量池中的String对
214+
System.out.println(s3 == s2);//true,因为两个都是常量池中的String对象
215215
```
216216
**3 String 字符串拼接**
217217
```java

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /