内存管理:避免内存溢出和频繁的垃圾回收

Posted chjxbt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理:避免内存溢出和频繁的垃圾回收相关的知识,希望对你有一定的参考价值。

一、前言

在高并发、高吞吐量的极限情况下,简单的事情就会变得没有那么简单了。

  • 一个业务逻辑非常简单的微服务,日常情况下都能稳定运行,一到大促就卡死甚至进程挂掉。
  • 一个做数据汇总的应用,按照小时、天这样的粒度进行数据汇总都没有问题,到年底需要汇总全年数据的时候,没等数据汇总出来,程序就死掉了。

出现这些情况的大部分原因是,在程序设计时,没有针对高并发高吞吐量的情况做好内存管理

 

二、内存管理机制

现代编程语言,想Java、Go等,采用的都是自动内存管理机制。在编写代码时,不需要显式去申请和释放内存。当创建一个新对象时,系统会自动分配一块内存用于存放新创建的对象,对象使用完毕后,系统会自动择机收回这块内存,完全不需要开发者干预。对于开发者,这种自动内存管理机制,显然是非常方便的,不仅极大降低了开发难度,提升了开发效率,更重要的是,它完美地解决了内存泄漏的问题。但是它也会带来一些问题,这要从它的实现原理来分析。

 

做内存管理,主要需要考虑申请内存和内存回收:

1、申请内存的逻辑

  • 计算要创建对象所需要占用的内存大小;
  • 在内存中找一块儿连续并且是空闲的内存空间,标记为已占用;
  • 把申请的

以上是关于内存管理:避免内存溢出和频繁的垃圾回收的主要内容,如果未能解决你的问题,请参考以下文章

如何避免内存溢出和频繁的垃圾回收

阿里架构师的内存管理心得:如何避免内存溢出和频繁的垃圾回收?

Python垃圾回收机制 总结

JVM内存管理和垃圾回收

Python 垃圾回收机制

Java内存管理及垃圾回收总结