内存管理:避免内存溢出和频繁的垃圾回收
Posted chjxbt
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存管理:避免内存溢出和频繁的垃圾回收相关的知识,希望对你有一定的参考价值。
一、前言
在高并发、高吞吐量的极限情况下,简单的事情就会变得没有那么简单了。
- 一个业务逻辑非常简单的微服务,日常情况下都能稳定运行,一到大促就卡死甚至进程挂掉。
- 一个做数据汇总的应用,按照小时、天这样的粒度进行数据汇总都没有问题,到年底需要汇总全年数据的时候,没等数据汇总出来,程序就死掉了。
出现这些情况的大部分原因是,在程序设计时,没有针对高并发高吞吐量的情况做好内存管理。
二、内存管理机制
现代编程语言,想Java、Go等,采用的都是自动内存管理机制。在编写代码时,不需要显式去申请和释放内存。当创建一个新对象时,系统会自动分配一块内存用于存放新创建的对象,对象使用完毕后,系统会自动择机收回这块内存,完全不需要开发者干预。对于开发者,这种自动内存管理机制,显然是非常方便的,不仅极大降低了开发难度,提升了开发效率,更重要的是,它完美地解决了内存泄漏的问题。但是它也会带来一些问题,这要从它的实现原理来分析。
做内存管理,主要需要考虑申请内存和内存回收:
1、申请内存的逻辑
- 计算要创建对象所需要占用的内存大小;
- 在内存中找一块儿连续并且是空闲的内存空间,标记为已占用;
- 把申请的
以上是关于内存管理:避免内存溢出和频繁的垃圾回收的主要内容,如果未能解决你的问题,请参考以下文章