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

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

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

转载于:https://www.cnblogs.com/wangtao_20/p/4590000.html

你可能感兴趣的文章
深入理解ajax系列第七篇——传递JSON
查看>>
Vim简明学习
查看>>
16.文件file
查看>>
PHP-FPM@year12
查看>>
Reportviewer中的函数使用——打印当前日期并格式化
查看>>
oracle用户管理
查看>>
15.Intellij中配置jdk/tomcat/maven
查看>>
GridView中实现CheckBox的全选
查看>>
home.pl 正在促销,一些域名免费(终止于2017.4.4)
查看>>
python、js 时间日期模块time
查看>>
Loadrunner监控Centos
查看>>
转:问题解决:The project cannot be built until build path errors are resolved
查看>>
Python--day25--面向对象之多态
查看>>
submit
查看>>
数据结构-----树状数组
查看>>
mac终端下svn常用命令
查看>>
C++的lambda表达式
查看>>
新手学习python(十六)封装redis
查看>>
vue移动端弹框组件
查看>>
vuex
查看>>