mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-20 22:17:09 +08:00
Update Java内存区域图片
Java内存区域图片我重新画了一遍!
This commit is contained in:
parent
55f795eaa8
commit
ff4e445583
@ -115,7 +115,7 @@ HotSpot 虚拟机中方法区也常被称为 **“永久代”**,本质上两
|
||||
|
||||
### 2.7 直接内存
|
||||
|
||||
直接内存并不是虚拟机运行时数据区的一部分,也不是虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用。而且也可能导致OutOfMemoryError异常出现。
|
||||
直接内存并不是虚拟机运行时数据区的一部分,也不是虚拟机规范中定义的内存区域,但是这部分内存也被频繁地使用。而且也可能导致 OutOfMemoryError 异常出现。
|
||||
|
||||
JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通道(Channel)** 与**缓存区(Buffer)** 的 I/O 方式,它可以直接使用Native函数库直接分配堆外内存,然后通过一个存储在 Java 堆中的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样就能在一些场景中显著提高性能,因为**避免了在 Java 堆和 Native 堆之间来回复制数据**。
|
||||
|
||||
@ -139,7 +139,7 @@ JDK1.4中新加入的 **NIO(New Input/Output) 类**,引入了一种基于**通
|
||||
选择以上两种方式中的哪一种,取决于 Java 堆内存是否规整。而 Java 堆内存是否规整,取决于 GC 收集器的算法是"标记-清除",还是"标记-整理"(也称作"标记-压缩"),值得注意的是,复制算法内存也是规整的
|
||||
|
||||

|
||||
|
||||
|
||||
**内存分配并发问题(补充内容,需要掌握)**
|
||||
|
||||
在创建对象的时候有一个很重要的问题,就是线程安全,因为在实际开发过程中,创建对象是很频繁的事情,作为虚拟机来说,必须要保证线程是安全的,通常来讲,虚拟机采用两种方式来保证线程安全:
|
||||
|
Loading…
x
Reference in New Issue
Block a user