首页 > 系统相关 >每日面经分享03.22(垃圾回收、内存溢出)

每日面经分享03.22(垃圾回收、内存溢出)

时间:2024-03-22 13:29:37浏览次数:24  
标签:03.22 面经 回收 sys gc 内存 溢出 垃圾

1. 什么是垃圾回收机制

a. 垃圾回收是一种自动内存管理机制,用于在程序运行时自动释放不再使用的内存空间。
b. 作用减少内存泄漏和提高程序的性能。

2. Python中垃圾回收机制方法

a. gc模块:Python提供了gc(Garbage Collector)模块,用于控制和调整垃圾回收机制的行为。通过该模块,可以手动控制垃圾回收的启用和禁用,以及设置垃圾回收的阈值等。

import gc

# 手动触发垃圾回收
gc.collect()

# 获取垃圾回收的状态
gc.get_count()

# 设置垃圾回收的阈值
gc.set_threshold(threshold0, threshold1, threshold2)

b. sys模块:Python的sys模块提供了一些与解释器和系统相关的功能,其中包括与垃圾回收相关的设置。

import sys

# 获取当前垃圾回收的阈值
sys.getrefcount(object)

# 获取当前垃圾回收的开启状态
sys.getswitchinterval()

# 设置垃圾回收的开启状态
sys.setswitchinterval(interval)
3. 什么是内存溢出?导致内存溢出的原因?

a. 内存溢出是指程序在运行过程中申请的内存超出了系统可用的内存资源。当程序需要分配更多的内存空间时,但系统没有足够的可用内存供分配时,就会发生内存溢出。
b. 无限递归:当一个函数或方法无限递归调用自身,每次递归都会在栈中增加一层调用框架,如果递归没有终止条件或终止条件不正确,就会导致栈溢出,从而触发内存溢出。
c. 内存泄漏:内存泄漏是指程序中已经不再使用的内存没有被正确释放。这种情况下,内存会逐渐积累,最终超出系统可用的内存限制,导致内存溢出。常见的内存泄漏情况包括未关闭的文件句柄、未释放的动态分配的内存等。
d. 大数据集处理:当程序需要处理大规模的数据集时,如果没有合理地管理内存,就可能发生内存溢出。例如,在读取大型文件或处理大型图像时,如果一次性将整个文件或图像加载到内存中而不进行适当的分块处理,就会导致内存溢出。

4. 避免内存溢出的方法

a. 确保递归函数有正确的终止条件,避免无限递归。

  • 好的编程习惯和内存管理实践,避免内存泄漏。
  • 对于大数据集的处理,使用适当的算法和数据结构,进行分块处理或利用流式处理等方式,减少内存占用。
  • 监控和调整程序的内存使用情况,及时释放不再使用的内存资源。

标签:03.22,面经,回收,sys,gc,内存,溢出,垃圾
From: https://blog.csdn.net/qq_41214208/article/details/136938226

相关文章

  • 2024.03.22【文字海报】如何使用文字来展现中文排版的高级感
    上图这行字除了使用英文以外,它还使用了衬线体。衬线体能够体现出字体的复古文艺的感觉;相应的,如果换成了非衬线体,就会体现出一种现代简约的感觉,相同的文字不同的字体能够带给人们不一样的视觉感受。通过这些主体文字的语言,你就能感受到强烈的风格。当主体变成中文时,画面中这个......
  • C语言内存函数之 memcpy和memmove函数
    memcpy函数的记忆方法:mem表示内存类函数,属于头文件string.h里面的函数。cpy是copy的缩写,表示对内存数据进行拷贝。memcpy函数的输入值和返回值:void* my_memcpy(void*brr,void*arr,size_tv) memcpy的输入值分别是被拷贝数据的brr的无类型数组的首地址,然后是拷贝给别人的无......
  • Java内存马1-传统web内存马
    1、前置知识(1)TomcatTomcat是一个开源的、轻量级的、用于JavaServlet和JavaServerPages(JSP)的Web应用程序服务器。它是Apache软件基金会的一个项目,也是最流行的Servlet容器之一,适用于开发和部署各种类型的JavaWeb应用程序。Tomcat负责管理Servlet的生命周期,包括加载、初始化......
  • 【ai技术】(3):树莓派4,成功安装ollama软件,内存4G,推荐使用命令行界面安装,使用raspi-config
    1,关于raspberrypi4项目https://www.bilibili.com/video/BV1K2421P71h/【ai技术】(3):树莓派4,成功安装ollama软件,内存4G,安装命令行版本,使用raspi-config配置wifi,速度9t/s2,下载raspberrypi镜像项目地址:https://www.raspberrypi.com/software/operating-systems/#r......
  • cuda 内存模型
    cuda内存模型其实概括来说就是下面两张图双箭头代表可读可写,单箭头代表只读1.localmemory#include<iostream>#include"cuda_runtime.h"#include"device_launch_parameters.h"#defineBLOCK_SIZE256__global__voidtest_kernal(){ intarray[3]; floatvalu......
  • C++的内存管理
    1.C/C++内存分布我们可以先来了解一下具体的内存区域分布图,通过一个代码 那么我们想为什么要划分这些区域?为了方便管理因为我们在程序中有不同类型的数据(静态,局部,全局等)比如生命周期的不同,放到不同的区域进行管理哪个是我们重点关注的?堆区。因为其他区域不用管释......
  • 2024.2.29校招 实习 内推 面经
    绿*泡*泡VX:neituijunsir  交流*裙,内推/实习/校招汇总表格1、校招|影石Insta3602024春季校园招聘启动(内推)校招|影石Insta3602024春季校园招聘启动(内推)2、校招|虹软科技2024届校招春招批通道开启(内推)校招|虹软科技2024届校招春招批通道开启(内推)3、校招|......
  • 内存CPU监控
    #-*-coding:utf-8-*-"""--------------------------------Time:2024/3/2111:50Author:NingDescription:xitong_jiankong.py系统内存、cpu使用情况检测--------------------------------"""fromloguruimportlo......
  • C语言数据在内存中的存续:一篇文章让你秒懂基础!
    JAMES别扣了-CSDN博客......
  • 测试面经 之 如何判断 Bug 是前端问题还是后端问题
    常见软件测试问题,如何判断一个Bug是Bug,并且如何判断该bug是前端问题还是后端问题。1.记录Bug:首先,作为一个专业的测试,无论该bug怎样,是否太浅显,都需要及时记录该问题。将该问题的标题,问题描述,复现步骤,环境版本,测试环境,测试账号,服务器端日志,报错截图,接口入参和......