内存泄漏和内存溢出

简介:     什么是内存泄漏,我以前以为是内存被人可以拿到里面内容。 现在发现概念是内存区域没有释放掉。内存泄漏造成的表现形式是,进程越来越慢。慢的原因是,它申请的内存越来越多,没有释放掉内存。
 
 
 
什么是内存泄漏,我以前以为是内存被人可以拿到里面内容。

现在发现概念是内存区域没有释放掉。

内存泄漏造成的表现形式是,进程越来越慢。慢的原因是,它申请的内存越来越多,没有释放掉内存。
而操作系统对进程的内存占用有限制。操作系统会将大的进程置换到磁盘去。换到磁盘去就导致速度慢了。
主要是磁盘的速度跟不上。

这让我联想到以前自己的系统,变得那么慢。磁盘原因。
虚拟的内存,不是真实占用这么多物理内存。而是需要申请更多内存 。操作系统只能将这样的进程换到虚拟内存中去,虚拟内存就是在磁盘的空间。

 
 
 
为什么内存占用越来越多后,就会导致进程慢呢?根源是什么?


感觉与内存溢出一样?

应用程序可以申请很多内存,操作系统并没有对进程申请多少内存进行限制,也就是说,可以无限度地申请。
为什么操作系统没有做限制?不知道!

操作系统没有做限制,需要的时候就分配内存,这就是动态创建内存叫法的本义。


如果没有更多内存可用呢?内核程序就处在等待分配中,机器挂起状态。

这是虚拟内存,操作系统没有更多内存申请,就会调度。

这个调度算法是怎么算的呢?

 

一个是存储的数据,内存存不下了。

溢出,想象装水的容器,水装不下就会溢出。内存也是这样。

为什么有些解释法是,内存区域没有指针指向它。这种内存空间就是内存泄漏。

Linux上有什么工具可以检测内存泄漏呢?

原理是不是检测内核对内存的申请,有没有处在等待中种。申请不到内存就会是等待中。

思路是检测内核。内核的调用非常频繁。可以实时监测到。
 
 




一般一个操作系统上对进程使用内存的最大限制是4g。32位操作系统是这样。
大的进程移动到磁盘需要花费时间(磁盘i/0)

 

如何才能让自己用这个知识解决php的问题呢。

内存泄漏,将内存耗尽。什么情况会?因为没有释放掉。


内存溢出,申请不到可用的内存。


为什么站在操作系统的角度来说泄漏的呢?


参考http://m.111cn.net/art-55371.htm。

Bad-gatway,表示的是很累。而502则是超时。
 


引用计数的变量,只有在引用数变为0时才释放掉。
网上说,常见的bug就是没有将引用计数器减1。导致没有释放掉。

有垃圾回收机制可以让程序员省心。关键是这个垃圾回收机制要怎么设计。删除引用数为0的变量?

一个进程占用20m。怎么理解这个进程调度呢。


如何调用哪个进程处理呢。



 
 
 
 
目录
相关文章
|
2月前
|
弹性计算 运维 搜索推荐
幻兽帕鲁内存溢出怎么办,一键设置定时重启,修改虚拟内存,定时清理,轻松解决卡顿!再也不怕爆内存了!
幻兽帕鲁的内存溢出问题,玩久了确实会变卡。这里给出三个解决思路:第一种方法是定时进行内存清理(装个软件就可以),网上也有很多教程,我会把下载地址放在文章后面,大家可以去下载。第二种方法是调大虚拟内存,这个可以一键设置。第三种方法是定时重启游戏服务,这个也可以一键设置。这三种方法我下面都会教给大家,可以有效解决内存增长过快的问题,避免游戏卡顿甚至崩溃。
470 3
|
2月前
|
SQL Java Apache
Flink内存问题之内存溢出如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
3月前
|
存储 算法 Java
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
JVM-01Java内存区域与内存溢出异常(上)【运行时区域数据】
36 0
|
9月前
|
存储 Java 编译器
【Java面试】说说JVM的内存结构以及他们那些会产生内存溢出?
【Java面试】说说JVM的内存结构以及他们那些会产生内存溢出?
519 0
|
9月前
|
C语言
内存泄露和内存溢出
内存泄露和内存溢出
157 0
|
6月前
|
存储 缓存 监控
JVM第一讲:内存结构和内存分配,内存溢出和内存泄露
JVM第一讲:内存结构和内存分配,内存溢出和内存泄露
|
6月前
|
C++
[总结]c++ 内存泄露、内存溢出、内存越界和栈溢出
[总结]c++ 内存泄露、内存溢出、内存越界和栈溢出
141 0
|
8月前
|
IDE Java 开发工具
什么是内存溢出,什么是内存泄漏?
什么是内存溢出,什么是内存泄漏?这是很多小伙伴经常问我的一个问题,今天花3分钟时间给大家介绍一下。先来介绍什么是内存溢出?
120 0
|
8月前
|
Java 数据库 Android开发
Android 中的内存泄漏和内存溢出
Android 中的内存泄漏和内存溢出
48 0
|
9月前
|
Java
40-对象太多了!堆内存实在是放不下,只能内存溢出!
之前通过三篇文章的分析,介绍了 直接内存、Metaspace和栈内存三块区域的内存溢出,同时给出了一些常见的引发内存溢出的场景以及对应解决方案,一般只要vm参数配置合理,代码上不出现大问题,一般不太容易引发对应的OOM
129 0
40-对象太多了!堆内存实在是放不下,只能内存溢出!