当前位置: 首页 > news >正文

[Java、Android面试]_05_内存泄漏和内存溢出

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。

整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注+收藏

文章目录

    • 1. 内存泄漏
    • 2. 内存溢出

1. 内存泄漏

内存泄露是指申请了一块内存,但没有及时释放,这块内存就会一直被占用而无法被分配,这样就出现了内存泄露。

(1)内存泄露的四种状态:
常发性内存泄漏: 发生泄露的代码经常性被执行,每次都会泄露一块内存;

偶发性内存泄露: 发生内存泄露的代码只有在特定环境和操作过程中才会发生;

一次性内存泄露: 发生内存泄露的代码仅会被执行一次,或者由于算法上的缺陷,导致总会有一块且仅一块内存发生泄露。例如:在类的构造函数中分配内存,在析构函数中却没有释放内存,这里就仅发生一次。

隐式内存泄漏: 程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。

(2)内存泄露实例:
单例、线程、hander都可能造成内存泄露。下面展示单例造成的内存泄露实例:

//单例需要传入一个Context,所以这个Context的生命周期的长短至关重要:
public class AppManager {private static AppManager instance;private Context context;private AppManager(Context context) {this.context = context.getApplicationContext();// 1.这里传入一个Application的Context:这将没有任何问题,因为单例的		生命周期和Application的一样长//this.context = context;// 2、传入的是Activity的Context:当这个Context所对应的Activity退出时,由于该Context和Activity的生命周期一样长(Activity间接继承于Context),所以当前Activity退出时它的内存并不会被回收,因为单例对象持有该Activity的引用。    }public static AppManager getInstance(Context context) {if (instance != null) {instance = new AppManager(context);}return instance;}
}

单例的静态特性使得单例的生命周期和应用的生命周期一样长,这就说明了如果一个对象已经不需要使用了,而单例对象还持有该对象的引用,那么这个对象将不能被正常回收,这就导致了内存泄漏。
怎样解决呢?
可以是用对context使用软引用或弱引用的方式进行引用。

2. 内存溢出

系统无法分配需要的内存,就会造成OOM.
产生原因及如何避免:
(1)图片过大导致OOM:对图片进行质量压缩或尺寸压缩
(2)对不需要的使用的资源进行释放内存
(3)查询数据库没有关闭游标
(4)在Activity生命周期onPause()、onStop()、onDestory()中适当释放资源

相关文章:

[Java、Android面试]_05_内存泄漏和内存溢出

本人今年参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来,感兴趣的朋友可关注收…...

MySQL-HMA 高可用故障切换

本章内容: 了解MySQL MHA搭建MySQL MHAMySQL MHA故障切换 1.案例分析 1.1.1案例概述 目前 MySQL 已经成为市场上主流数据库之一,考虑到业务的重要性,MySQL 数据库 单点问题已成为企业网站架构中最大的隐患。随着技术的发展,MHA…...

深度学习 精选笔记(11)深度学习计算相关:GPU、参数、读写、块

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…...

深度学习 Day27——J7对于ResNeXt-50算法的思考

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制🚀 文章来源:K同学的学习圈子 文章目录 前言问题分析 前言 关键问题:ResNeXt-50中conv_shortcutFalse时…...

华为配置敏捷分布式SFN漫游实验

配置敏捷分布式SFN漫游示例 组网图形 图1 配置敏捷分布式SFN漫游示例组网图 组网需求数据规划配置思路配置注意事项操作步骤配置文件 组网需求 某医院通过部署敏捷分布式网络给医护人员提供WLAN接入服务,以满足医护人员办公的最基本需求。管理员希望终端在覆盖区域内…...

续上篇 qiankun 微前端配置

上篇文章地址:微前端框架 qiankun 配置使用【基于 vue/react脚手架创建项目 】-CSDN博客 主应用: src/main.js 配置: import Vue from vue import App from ./App.vue import router from ./router import { registerMicroApps, start } …...

AI日报:欧盟人工智能法案通过后行业面临合规障碍

文章目录 人工智能新规对web爬网的影响对英国的影响。 人工智能新规 立法者已经通过了欧盟人工智能法案。企业现在必须确保其人工智能应用程序符合规则。 全面的新规定对可能影响公民权利的人工智能系统实施制裁,并有可能彻底禁止某些系统。 违反规定的公司可能面…...

音视频如何快速转二维码?在线生成音视频活码的教程

音频文件的二维码制作步骤是什么样的呢?扫描二维码来展现内容是很流行的一种方式,基本上日常生活中经常会用的图片、音频、视频等都可以使用生成二维码的方式。现在很多的幼儿园或者学校会录制孩子的音频或者视频内容用来展示,那么二维码制作…...

开源堡垒机Jumpserver安装教程

前言:堡垒机的应用场景 公司内有若干台服务器,既有windows的也有linux的, 提供有ERP,OA,Web,报表等等各种服务,往往需要远程登录到服务器上去做运维,但如果给root或者administrator权限,很容易出现不知道谁操作了的问题.如果不同人设置不同账号,又账号过多,权限不足等等其他问题…...

CentOS 7 socat命令端口转发 —— 筑梦之路

命令简介 socat是一个功能强大的命令行工具,也可以看作是netcat的加强版,它可以在两个端口之间建立虚拟通道,实现数据的传输。适用于网络调试、端口转发、安全测试等多种场景,是一个适合网络管理员和开发者的工具 yum在线安装 yu…...

SeaTunnel 2.3.4 Cluster in K8S

参考:seatunnel k8s运行zeta引擎(cluster-mode模式)_apache seatunnel zeta 启动-CSDN博客 以上参考使用的是2.3.3版本 下载2.3.4版本, 上dlcdn.apache.org下载 ,官网下载有问题 wget https://dlcdn.apache.org/seatunnel/2.3.4/…...

多模态学习 - 视觉语言预训练综述-2023-下游任务、数据集、基础知识、预训练任务、模型

参考: https://zhuanlan.zhihu.com/p/628840228 https://zhuanlan.zhihu.com/p/628994098 https://zhuanlan.zhihu.com/p/629996372 https://zhuanlan.zhihu.com/p/582424974 多模态学习 - 视觉语言预训练综述-2023-下游任务、数据集、基础知识、模型 1. 多模态介绍…...

Vite为什么比Webpack快

一、引言 主流的前端构建工具包括以下几种: Webpack:当下最热门的前端资源模块化管理和打包工具。它能够将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。同时,Webpack还支持代码分割,可以按需加载模块&#…...

因聚而生 数智有为丨软通动力携子公司鸿湖万联亮相华为中国合作伙伴大会2024

3月14日,以“因聚而生 数智有为”为主题的“华为中国合作伙伴大会2024”在深圳隆重开幕。作为华为的重要合作伙伴和本次大会钻石级(最高级)合作伙伴,软通动力深度参与本次盛会,携前沿数智化技术成果和与华为的联合解决…...

724.寻找数组的中心下标

题目:给你一个整数数组 nums ,请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不…...

Selenium 是什么?简单了解Selenium

Selenium Selenium 是什么 Selenium 是一款 Web UI 测试工具,是一款 自动化测试 工具,使用 Selenium 测试工具进行的测试通常被称为 Selenium Testing,各种支持如下列表: UI 元素的支持与管理:自写代码实现浏览器支…...

钡铼技术有限公司R40路由器工业4G让养殖环境监控更高效

钡铼技术有限公司的R40路由器是一款专为养殖环境监控而设计的工业级4G路由器。该路由器的出现极大地提高了养殖行业的监控效率,为养殖场主和管理者提供了更可靠、高效的解决方案。本文将从功能特点、优势以及应用案例等方面介绍钡铼技术有限公司的R40路由器在养殖环…...

vue2 / vue3 路由(返回跳转)时判断 + 取消跳转

vue3 options api&#xff1a; <template><button click$router.back()>返回</button><input type"text" v-model"formData.v1"><textarea name"" id"" v-model"formData.v2" cols"30&quo…...

【设计模式】Java 设计模式之代理模式(Proxy Pattern)

代理模式深入分析 一、概述 代理模式是一种为其他对象提供一种代理以控制对这个对象的访问的设计模式。在某些情况下&#xff0c;一个对象不适合或者不能直接访问另一个对象&#xff0c;而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式的主要目的是&#xf…...

逻辑数据平台的 NoETL 之道(内含QA)

作者简介&#xff1a; 余俊&#xff0c;Aloudata 合伙人 & 技术副总裁。拥有 18 年互联网技术和大数据平台相关架构经验。作为主架构师及核心研发主导并完成了 Alibaba B2B 首个海量分布式 KV 存储系统&#xff0c;作为网站架构师负责 Aliexpress 全球买全球卖交易系统的第…...

GIL下的隐性内存竞争:多线程Python服务内存占用翻倍的底层机制(含perf火焰图验证)

第一章&#xff1a;Python 智能体内存管理策略 避坑指南Python 的内存管理看似“全自动”&#xff0c;实则暗藏诸多隐性陷阱——对象引用计数异常、循环引用导致的延迟回收、大对象驻留引发的内存碎片&#xff0c;以及多线程环境下 gc 模块行为不一致等问题&#xff0c;常在高并…...

4步轻松搞定Windows系统优化:Win11Debloat让你的电脑重获新生

4步轻松搞定Windows系统优化&#xff1a;Win11Debloat让你的电脑重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter…...

GetQzonehistory终极指南:三步永久备份你的QQ空间数字记忆

GetQzonehistory终极指南&#xff1a;三步永久备份你的QQ空间数字记忆 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否也曾翻看QQ空间&#xff0c;发现那些承载青春记忆的说说正在…...

X-AnyLabeling实战指南:AI驱动的智能数据标注工具深度解析

X-AnyLabeling实战指南&#xff1a;AI驱动的智能数据标注工具深度解析 【免费下载链接】X-AnyLabeling Effortless data labeling with AI support from Segment Anything and other awesome models. 项目地址: https://gitcode.com/gh_mirrors/xa/X-AnyLabeling X-AnyL…...

win10深度清理c盘工具推荐:从更新缓存到微信专清

普通的垃圾清理已经无法满足需求&#xff1f;当C盘空间告急&#xff0c;那些隐藏在系统深处和应用角落的“顽固分子”——比如Windows更新旧文件、微信数GB的聊天缓存——才是真正需要对付的目标。深度清理&#xff0c;就是要对这些难以触及的领域进行精准打击。深度清理的目标…...

从零到一:MicroPython 环境搭建与首个硬件交互项目实战

1. 初识MicroPython&#xff1a;为什么选择它&#xff1f; 第一次接触MicroPython时&#xff0c;我正为一个智能家居项目寻找合适的开发方案。当时被它"Python on hardware"的理念吸引——毕竟谁能拒绝用熟悉的Python语法直接控制硬件呢&#xff1f;MicroPython本质上…...

硕博必看|论文盲审前,这些硬伤一定要避开!

作为过来人&#xff0c;太懂硕博生面对论文盲审的焦虑——熬夜完成的论文&#xff0c;查重、改格式、找导师签字后&#xff0c;仍怕因细节被盲审专家打回、延毕。盲审专家只看质量不看人情&#xff0c;很多不起眼的小问题&#xff0c;都可能成为“致命扣分点”。今天分享核心干…...

Bidili Generator实操演示:LoRA权重强度与CFG Scale协同调优黄金组合

Bidili Generator实操演示&#xff1a;LoRA权重强度与CFG Scale协同调优黄金组合 1. 引言&#xff1a;当定制化风格遇上精细控制 如果你用过Stable Diffusion XL&#xff08;SDXL&#xff09;来生成图片&#xff0c;可能会遇到这样的困扰&#xff1a;好不容易找到一个喜欢的L…...

Ubuntu 22.04下用mingw-w64交叉编译Windows程序的完整指南(附CMake配置)

Ubuntu 22.04下用mingw-w64交叉编译Windows程序的完整指南&#xff08;附CMake配置&#xff09; 在跨平台开发领域&#xff0c;能够从Linux系统生成Windows可执行文件是一项极具实用价值的技能。对于使用Ubuntu 22.04 LTS的开发者来说&#xff0c;mingw-w64工具链提供了稳定高…...

Alerter终极声音设置指南:为Android通知添加音频反馈的完整教程

Alerter终极声音设置指南&#xff1a;为Android通知添加音频反馈的完整教程 【免费下载链接】Alerter Tapadoo/Alerter: 是一个简单易用的 Android 通知和进度条控件库。适合对 Android 开发、用户界面以及想要在 Android 应用中显示通知和进度条的开发者。 项目地址: https:…...