[性能问题]:内存的一些记录

这写都是想到哪写到哪,权当自己的一个草稿纸了

JAVA的内存分为堆,栈,代码区,数据区

堆,存放的东西比较大,不连续的,需要优专门的回收机制来收回,在C++申请需要new,回收需要delete,在java中有GC机制回收;

栈:先进先出,后进后出,相对于函数来说,局部变量这些都是存放在栈中的,函数执行完成后,自动回收了,容量较小,。

堆管理起来很麻烦,频繁地new/remove会造成大量的内存碎片,这样就会慢慢导致效率低下,

我们说到的内存泄漏,GC回收,是说的堆内存,因为栈内存在函数结束的时候就被释放了;

内存泄漏:当一个对象本应该被回收,而没有被回收(可能由于被引用了啊)

有一些如下场景:

1,资源对象未关闭,socket通道未关闭,占用内存资源;

2,类的静态变量维持到大数据量对象引用,阻碍了GC(garbage collection);

3,例如listener函数未关闭(注册对象未反注册)等等

GC机制一般有两个:

1,发现无用的信息对象;

2,回收无对象占用的内存空间;

搜索算法有多种,例如从根搜索算法,从一个节点开始GC,OOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用到的节点,即无用的节点

转载于:https://www.cnblogs.com/fy--/p/9713504.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值