内存优化 初级
深拷贝浅拷贝
int num1 = 10;
// 这里是将num1对应的值赋给num2
int num2 = num1;
// num2自增10,num2变成20,但num1还是10,这里使用的是深拷贝
num2 +=10;
深拷贝:拿到的是对应的值。
int[] list1 = { 1, 2, 3 };
// 将{1,2,3}数据的索引复制一份给到list2
int[] list2 = list1;
// list2改变的是list1和list2共同指向的数据,这里是浅拷贝
list2[0] = 10;
浅拷贝:拿到的是对应的索引。
垃圾回收GC
垃圾回收(GC)是指将废弃的内存重新回收再次使用的过程
内存抖动
指内存频繁的分配和回收,频繁的GC会导致卡顿,严重时会导致内存泄漏。
字符串拼接
StringBuilder sb = new StringBuilder();
sb.Append("s");
使用字符串进行拼接:每次拼接都会创建一个新的字符串,删掉旧的字符串。及其耗费内存。
建议使用StringBuilder
进行追加。
对象池
像游戏中的子弹,会频繁的使用,这个时候若是用的时候创建,不用的时候将其销毁,则会产生大量的GC,可以通过提前实例化一部分的子弹,将子弹创建时的逻辑更改成将子弹显示,当子弹销毁的时候的逻辑更改成将子弹隐藏,从而避免频繁的创建和销毁,从而降低垃圾回收 。
本文来自博客园,作者:坞中客,转载请注明原文链接:https://www.cnblogs.com/wuzhongke/p/16885224.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?