[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: <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)
代理模式深入分析 一、概述 代理模式是一种为其他对象提供一种代理以控制对这个对象的访问的设计模式。在某些情况下,一个对象不适合或者不能直接访问另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式的主要目的是…...
逻辑数据平台的 NoETL 之道(内含QA)
作者简介: 余俊,Aloudata 合伙人 & 技术副总裁。拥有 18 年互联网技术和大数据平台相关架构经验。作为主架构师及核心研发主导并完成了 Alibaba B2B 首个海量分布式 KV 存储系统,作为网站架构师负责 Aliexpress 全球买全球卖交易系统的第…...
一文分清黑客、骇客、白客、红客,各自职责一目了然
黑客 起源 “黑客”一词是英文Hacker的音译。这个词早在莎士比亚时代就已存在了,但是人们第一次真正理解它时,却是在计算机问世之后。根据《牛津英语词典》解释,“hack”一词最早的意思是劈砍,而这个词意很容易使人联想到计算机…...
ESP32/ESP8266固件备份全攻略:esptool与flash_download_tool实战详解
1. 项目概述:为什么我们需要备份ESP32/8266的固件? 在嵌入式开发或者物联网项目中,ESP32和ESP8266这两款芯片的应用已经非常普遍了。无论是做智能家居、数据采集还是各种DIY小玩意儿,我们经常会在上面编写和烧录固件。但不知道你…...
智在记录 AI 语音转写效果实测与场景价值展示
在日常的高强度工作与学习中,我们常常面临一个共同的痛点:信息输入的速度远远超过了我们消化和记录的能力。无论是长达两小时的部门战略会议,还是节奏飞快的在线网课,亦或是需要精准捕捉细节的医疗问诊,传统的“笔头记…...
企业微信桌面端深度集成:DLL注入与协议逆向实战
1. 这不是“黑产教程”,而是企业级办公系统集成的现实路径“微信逆向与DLL注入”这八个字,一出来就容易让人联想到灰色地带、安全攻防、甚至违规外挂。但今天我要说的,是另一条路——一条我带团队在三年内落地了7个大型政企客户微信生态集成项…...
WordPress靶场构建指南:从渗透测试流程到GetShell实战
1. 为什么这个靶场不是“玩具”,而是渗透测试能力的试金石WordPress靶场搭建这件事,圈内很多人第一反应是:“不就是下个DVWA或者bWAPP?点几下就完事。”但真正带过红队新人、做过甲方渗透评估的同行都清楚:一个能支撑从…...
测试工程师如何与开发人员高效沟通?这5个技巧让你不再背锅
在互联网软件研发流程中,测试工程师和开发工程师是天生的“搭档”也是最容易产生矛盾的组合:测试测出bug,开发说“这不是我的问题”“环境不对”“你操作错了”,最后问题定位下来测试背锅;测试提前同步风险,…...
o3推理运行时与推理优化模型实战指南
1. 项目概述:当“智能体”真正开始自己动手干活最近在刷技术动态时,看到 TAI#149 这期简报标题里出现Agentic o3和Inference Optimized Models这两个词组合在一起,我立刻停下手头的活儿——这不是又一个“概念包装”,而是模型能力…...
向量化映射框架优化图着色问题的FPGA实现
1. 问题背景与核心挑战图着色问题作为组合优化领域的经典NP难问题,在集成电路布局分解、寄存器分配、逻辑最小化等场景中具有广泛应用。传统Ising机采用独热编码(one-hot encoding)方案,将每个节点的q种颜色状态映射为q个物理比特…...
嵌入式条码扫描头:从核心原理到八大行业应用实战
1. 项目概述:从“扫码”到“感知”的嵌入式革命每次在超市收银台听到“嘀”的一声,或者在快递驿站看到工作人员拿着手持设备快速扫过包裹,我们都在与条码扫描技术打交道。但你是否想过,这些看似简单的“扫码”动作背后,…...
大中小型企业数据配置年度成本估算分析
引言 在数字化转型浪潮下,数据已成为企业的核心资产。无论是初创公司、中型企业还是大型集团,合理规划数据存储、处理与分析的成本,对于优化IT预算、提升投资回报率至关重要。本文旨在为不同规模的企业提供一个清晰、可操作的年度数据配置成本…...
