内存优化 初级

深拷贝浅拷贝

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,可以通过提前实例化一部分的子弹,将子弹创建时的逻辑更改成将子弹显示,当子弹销毁的时候的逻辑更改成将子弹隐藏,从而避免频繁的创建和销毁,从而降低垃圾回收 。

posted @ 2022-11-13 00:21  坞中客  阅读(26)  评论(0编辑  收藏  举报