Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
清新范er
JavaGuide
提交
3a86e03f
J
JavaGuide
项目概览
清新范er
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
4
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
3a86e03f
编写于
1月 17, 2020
作者:
S
SnailClimb
提交者:
GitHub
1月 17, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #622 from rocky-peng/master
纠正4.3节中关于基本数据类型缓存的一点描述信息和删除多余的字
上级
126efe87
bbbd1e8c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
4 addition
and
5 deletion
+4
-5
docs/java/jvm/Java内存区域.md
docs/java/jvm/Java内存区域.md
+4
-5
未找到文件。
docs/java/jvm/Java内存区域.md
浏览文件 @
3a86e03f
...
...
@@ -178,7 +178,7 @@ JDK 8 版本之后方法区(HotSpot 的永久代)被彻底移除了(JDK1.7
堆这里最容易出现的就是 OutOfMemoryError 错误,并且出现这种错误之后的表现形式还会有几种,比如:
1.
**`OutOfMemoryError: GC Overhead Limit Exceeded`**
: 当JVM花太多时间执行垃圾回收并且只能回收很少的堆空间时,就会发生此错误。
2.
**`java.lang.OutOfMemoryError: Java heap space`**
:假如在创建新的对象时, 堆内存中的空间不足以存放新创建的对象, 就会引发
`java.lang.OutOfMemoryError: Java heap space`
错误。(和本机物理内存无关,和你配置的
对
内存大小有关!)
2.
**`java.lang.OutOfMemoryError: Java heap space`**
:假如在创建新的对象时, 堆内存中的空间不足以存放新创建的对象, 就会引发
`java.lang.OutOfMemoryError: Java heap space`
错误。(和本机物理内存无关,和你配置的内存大小有关!)
3.
......
### 2.5 方法区
...
...
@@ -291,7 +291,7 @@ JDK1.4 中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**
在 Hotspot 虚拟机中,对象在内存中的布局可以分为 3 块区域:
**对象头**
、
**实例数据**
和
**对齐填充**
。
**Hotspot 虚拟机的对象头包括两部分信息**
,
**第一部分用于存储对象自身的
自身
运行时数据**
(哈希码、GC 分代年龄、锁状态标志等等),
**另一部分是类型指针**
,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。
**Hotspot 虚拟机的对象头包括两部分信息**
,
**第一部分用于存储对象自身的运行时数据**
(哈希码、GC 分代年龄、锁状态标志等等),
**另一部分是类型指针**
,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是那个类的实例。
**实例数据部分是对象真正存储的有效信息**
,也是在程序中所定义的各种类型的字段内容。
...
...
@@ -387,7 +387,7 @@ true
### 4.3 8 种基本类型的包装类和常量池
-
**Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte,Short,Integer,Long,Character,Boolean;
这 5 种包装类默认创建了数值[-128,127] 的相应类型的缓存数据,但是超出此
范围仍然会去创建新的对象。**
为啥把缓存设置为
[
-128,127]区间?([参见issue/461
](
https://github.com/Snailclimb/JavaGuide/issues/461
)
)性能和资源之间的权衡。
-
**Java 基本类型的包装类的大部分都实现了常量池技术,即 Byte,Short,Integer,Long,Character,Boolean;
前面 4 种包装类默认创建了数值[-128,127] 的相应类型的缓存数据,Character创建了数值在[0,127]范围的缓存数据。如果超出对应
范围仍然会去创建新的对象。**
为啥把缓存设置为
[
-128,127]区间?([参见issue/461
](
https://github.com/Snailclimb/JavaGuide/issues/461
)
)性能和资源之间的权衡。
-
**两种浮点数类型的包装类 Float,Double 并没有实现常量池技术。**
```
java
...
...
@@ -476,4 +476,4 @@ i4=i5+i6 true
**Java工程师必备学习资源:**
一些Java工程师常用学习资源
[
公众号
](
#公众号
)
后台回复关键字
**“1”**
即可免费无套路获取。
![
我的公众号
](
https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png
)
\ No newline at end of file
![
我的公众号
](
https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-6/167598cd2e17b8ec.png
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录