Java千百问_07JVM架构(005)_显示内存管理有什么弊端
2016-05-22 11:05
423 查看
点击进入_更多_Java千百问
引用悬挂
当一个被某个引用变量正在使用的内存空间,在重新分配过程中被释放掉了,释放后,该引用变量就处于悬挂状态(所引用的对象已经不存在了)。
如果这个被悬挂引用变量,试图操作原来对象的时候,由于该对象本身的内存空间已经被手动释放掉了(已经不存在了),所以这个执行结果是不可预知的。
内存泄漏
当某些引用变量不再引用该内存对象的时候,而该对象原本占用的内存并没有被释放,这种情况就是内存泄漏。
例如,对某个链表进行了内存分配,因为手动分配内存不当,仅仅让引用变量指向了某个元素所处的内存空间,就使得这些元素所处的内存空间对程序来说处于不可达状态,而且这些对象所占有的内存也不能够被再使用,这个时候就发生了内存泄漏。
而这种情况一旦在程序中发生,就会一直消耗系统的可用内存直到可用的内存耗尽。对计算机而言,内存泄漏是非常严重的,会使得本来正常运行的程序直接因为内存不足而中断。与Java中的Exception并不是一个级别的错误。
对于显示内存管理来说,手动管理内存成本太高,风险很大。所以大多数纯面向对象语言而言,都提供了语言本身具有的内存特性:自动化内存管理。比如Java,提供了一个垃圾回收器(Garbage Collector,GC),自动内存管理提供了更加可靠的代码使得内存能够在程序里面进行合理的分配。
对于引用悬挂
JVM隐藏了对内存的管理,所以不会对正在使用的内存空间进行释放,也就不会出现引用悬挂。
对于内存泄漏
一旦有对象没有被任何引用变量引用时,也就是说这些对象在JVM的内存池里面成为了不可引用对象,垃圾回收器会直接回收掉这些对象的内存(当然需要满足一些规则,具体看这里:java垃圾回收机制是什么)。
1、显示内存管理有什么弊端
手动内存管理一般被称为显示内存管理,显示内存管理经常发生两种情况:引用悬挂
当一个被某个引用变量正在使用的内存空间,在重新分配过程中被释放掉了,释放后,该引用变量就处于悬挂状态(所引用的对象已经不存在了)。
如果这个被悬挂引用变量,试图操作原来对象的时候,由于该对象本身的内存空间已经被手动释放掉了(已经不存在了),所以这个执行结果是不可预知的。
内存泄漏
当某些引用变量不再引用该内存对象的时候,而该对象原本占用的内存并没有被释放,这种情况就是内存泄漏。
例如,对某个链表进行了内存分配,因为手动分配内存不当,仅仅让引用变量指向了某个元素所处的内存空间,就使得这些元素所处的内存空间对程序来说处于不可达状态,而且这些对象所占有的内存也不能够被再使用,这个时候就发生了内存泄漏。
而这种情况一旦在程序中发生,就会一直消耗系统的可用内存直到可用的内存耗尽。对计算机而言,内存泄漏是非常严重的,会使得本来正常运行的程序直接因为内存不足而中断。与Java中的Exception并不是一个级别的错误。
对于显示内存管理来说,手动管理内存成本太高,风险很大。所以大多数纯面向对象语言而言,都提供了语言本身具有的内存特性:自动化内存管理。比如Java,提供了一个垃圾回收器(Garbage Collector,GC),自动内存管理提供了更加可靠的代码使得内存能够在程序里面进行合理的分配。
2、java的自动内存管理有什么好处
java的自动内存管理(隐式内存管理)可以解决显示内存管理的问题:引用悬挂和内存泄漏。对于引用悬挂
JVM隐藏了对内存的管理,所以不会对正在使用的内存空间进行释放,也就不会出现引用悬挂。
对于内存泄漏
一旦有对象没有被任何引用变量引用时,也就是说这些对象在JVM的内存池里面成为了不可引用对象,垃圾回收器会直接回收掉这些对象的内存(当然需要满足一些规则,具体看这里:java垃圾回收机制是什么)。
相关文章推荐
- 大型电商架构设计各路诸侯点评
- shiro架构
- shiro架构
- 网站第三方登录--微信登录(填坑)
- aps - (Advanced Planning And Scheduling) 高级生产计划排程软件的架构和设计
- 网站页面来源都是直接输入网址或书签是怎么回事?
- 学生管理系统---三层架构
- MESOS集群高可用部署
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构
- Android群英传学习-第三章:控件架构与自定义控件详解
- 整理的网站
- 学习的网站(当前是别人整理的)
- 15年资深架构师总结的7条经验
- Flume(NG)架构设计要点及配置实践
- w3schools网站的HTML教程之HTML基础
- windows7 安装PHP7 本地网站搭建
- infini-band 服务器高速联网和SSD将架构认知推进到新阶段
- 高可用,和负载均衡的简单理解
- 学习网站记录
- 学生管理系统(三层架构)