博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内存泄漏和内存溢出
阅读量:6118 次
发布时间:2019-06-21

本文共 978 字,大约阅读时间需要 3 分钟。

 
 
 
什么是内存泄漏,我以前以为是内存被人可以拿到里面内容。
现在发现概念是内存区域没有释放掉。
内存泄漏造成的表现形式是,进程越来越慢。慢的原因是,它申请的内存越来越多,没有释放掉内存。
而操作系统对进程的内存占用有限制。操作系统会将大的进程置换到磁盘去。换到磁盘去就导致速度慢了。
主要是磁盘的速度跟不上。
这让我联想到以前自己的系统,变得那么慢。磁盘原因。
虚拟的内存,不是真实占用这么多物理内存。而是需要申请更多内存 。操作系统只能将这样的进程换到虚拟内存中去,虚拟内存就是在磁盘的空间。
 
 
 
为什么内存占用越来越多后,就会导致进程慢呢?根源是什么?
感觉与内存溢出一样?
应用程序可以申请很多内存,操作系统并没有对进程申请多少内存进行限制,也就是说,可以无限度地申请。
为什么操作系统没有做限制?不知道!
操作系统没有做限制,需要的时候就分配内存,这就是动态创建内存叫法的本义。
如果没有更多内存可用呢?内核程序就处在等待分配中,机器挂起状态。
这是虚拟内存,操作系统没有更多内存申请,就会调度。
这个调度算法是怎么算的呢?
 
一个是存储的数据,内存存不下了。
溢出,想象装水的容器,水装不下就会溢出。内存也是这样。
为什么有些解释法是,内存区域没有指针指向它。这种内存空间就是内存泄漏。
Linux上有什么工具可以检测内存泄漏呢?
原理是不是检测内核对内存的申请,有没有处在等待中种。申请不到内存就会是等待中。
思路是检测内核。内核的调用非常频繁。可以实时监测到。
 
 
一般一个操作系统上对进程使用内存的最大限制是4g。32位操作系统是这样。
大的进程移动到磁盘需要花费时间(磁盘i/0)
 
如何才能让自己用这个知识解决php的问题呢。
内存泄漏,将内存耗尽。什么情况会?因为没有释放掉。
内存溢出,申请不到可用的内存。
为什么站在操作系统的角度来说泄漏的呢?
参考http://m.111cn.net/art-55371.htm。
Bad-gatway,表示的是很累。而502则是超时。
 
引用计数的变量,只有在引用数变为0时才释放掉。
网上说,常见的bug就是没有将引用计数器减1。导致没有释放掉。
有垃圾回收机制可以让程序员省心。关键是这个垃圾回收机制要怎么设计。删除引用数为0的变量?
一个进程占用20m。怎么理解这个进程调度呢。
如何调用哪个进程处理呢。
 
 
 
 

转载地址:http://talka.baihongyu.com/

你可能感兴趣的文章
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>
IntelliJ IDEA中设置忽略@param注释中的参数与方法中的参数列表不一致的检查
查看>>
关于软件开发的一些感悟
查看>>
uva 10806
查看>>
纯CSS3绘制的黑色图标按钮组合
查看>>
Linux中环境变量文件及配置
查看>>
从0开始学Flutter
查看>>
mysql操作入门基础之对数据库和表的增删改查
查看>>
IIS负载均衡
查看>>
分布式事务,EventBus 解决方案:CAP【中文文档】
查看>>
Linux下的CPU性能瓶颈分析案例
查看>>
spring mvc入门
查看>>
2012在数据库技术会议上的讲话PPT打包
查看>>
【Android】 TextView设置个别字体样式
查看>>
python svn
查看>>
raise语句
查看>>
sequence2(高精度dp)
查看>>
ABP实战--集成Ladp/AD认证
查看>>