从对象在内存的状态的角度讲,一个对象被多次地从不同地方重新new,这样是否认为是同一对象呢???

peterli007 2004-01-20 08:52:56
从对象在内存的状态的角度讲,一个对象被多次地从不同地方重新new,这样是否认为是同一对象呢???如:
Bitmap b=null;
for (int i=10; i<100; i++)
{
b=new Bitmap(i+10, i);
}
以上是用for对Bitmap对象作多次的重新new,前一次称作旧对象,后一次称作新对象:
那么,从对象在内存的状态的角度看,当每次b被重新new时,旧对象是否被gc收回????
如果不是,那是怎样?????请说明。谢谢!!
...全文
233 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
loverP 2004-01-25
  • 打赏
  • 举报
回复
系统都帮你干了,还埋怨什么?
不想这样的话就不要用C#
peterli007 2004-01-25
  • 打赏
  • 举报
回复
当对象b的宽度或高度不断变化时,这90个对象b会造成内存的浪费,如何改进程序才能对无用的内存资源回收???
jonsonzxw 2004-01-20
  • 打赏
  • 举报
回复
总共生成 90 个 BitMap 实例,程序执行结束以后,只有最后一个实例被变量 b 引用,其他的 89 个实例所占的内存已被 GC 当作垃圾内存。

对极了,呵呵
AhBian 2004-01-20
  • 打赏
  • 举报
回复
总共生成 90 个 BitMap 实例,程序执行结束以后,只有最后一个实例被变量 b 引用,其他的 89 个实例所占的内存已被 GC 当作垃圾内存。

在第 0 代内存堆满时,随时会被自动回收。也就是说 GC 的垃圾内存回收操作不一定非要等到上面的 for 循环结束后才发生,可能当 i 等于 10 ~ 99之间的任意某个值就发生了一次 GC 操作。

如何让新对象覆盖掉旧对象?这问题很稀奇。

Bitmap b = null;这里申明的 b 仅是一个变量,一个能够引用 Bitmap 类型实例的引用变量而已。
再重复一遍,b 仅是一个引用变量,要从变量的角度来考察 b。
athossmth 2004-01-20
  • 打赏
  • 举报
回复
覆盖可能要自己写方法。
13880079673 2004-01-20
  • 打赏
  • 举报
回复
楼上都说的对,我也随便问个问题,如何让新对象覆盖原来的旧对象
xnice 2004-01-20
  • 打赏
  • 举报
回复
不是马上回收,要等编译器觉得内存吃紧的时候才收:)
running_su 2004-01-20
  • 打赏
  • 举报
回复
变量不是static的话,每一次new,都会占用一个内存
AlexAngel 2004-01-20
  • 打赏
  • 举报
回复
没有被回收。因为是先呢New然后赋值。在内存中依然存在多个实例。如果想让GC回收,应该直接调用GC.Collection不过比较慢。而且也没有必要这样作。当内存不太够用的时候,GC会自动清理。像上面的情况,很有可能是生成了90个实例。但只有一个在你的控制范围内。而其他的89个已经列入GC的回收表里了,但是都还在。只有GC执行了(不管是你调用的还是系统自动调用的)之后,才真正被回收。不过GC到底什么时候回收是不确定的,所以C#中没有析构函数,只有Finalize。
paladinfang 2004-01-20
  • 打赏
  • 举报
回复
对象还是同一对象,只不过被重新实例化,而实例化后就成为一个新的对象供调用,旧对象并没有被收回。
w_rose 2004-01-20
  • 打赏
  • 举报
回复
“一个对象被多次地从不同地方重新new”

C#板块这么弱?

new产生一个对象,怎么倒过来了?
turnmissile 2004-01-20
  • 打赏
  • 举报
回复
如果是singleton模式的话,应该还是一个对象。

如果是你写的那种code,可定时new了90个object,不过前面的89个object会在某个时候被系统释放,而最后一个也在b引用推出lifetime之后的某个时间被gc回收。


多旋翼无人机的软着陆,使用稳健的非线性控制和风力建模(Matlab代码实现)内容概要:本文围绕多旋翼无人机的软着陆问题,提出了一种基于稳健非线性控制与风力建模的解决方案,并通过Matlab代码实现仿真验证。研究重点在于设计能够应对外部风扰的非线性控制器,提升无人机在复杂气象条件下降落过程中的稳定性与安全性。文中详细阐述了系统动力学建模、风力干扰建模方法以及非线性控制策略的设计过程,特别是采用了非线性模型预测控制(MPC)框架,增强了系统对不确定性环境的适应能力。该方案有效提升了无人机软着陆的精度和鲁棒性。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的科研人员及工程技术人员,尤其适用于从事无人机控制、飞行器导航与制导、非线性系统控制等相关领域的研究生和研究人员。; 使用场景及目标:①应用于多旋翼无人机在强风或突变风场环境下的安全着陆控制;②为复杂环境下飞行器的鲁棒控制设计提供技术参考;③服务于科研项目中对非线性MPC控制算法的仿真验证与优化。; 阅读建议:建议读者结合Matlab代码深入理解控制算法的具体实现流程,重点关注系统建模与控制器设计之间的衔接逻辑,并可通过修改风扰参数进行仿真测试,以加深对鲁棒性设计的理解。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧