从对象在内存的状态的角度讲,一个对象被多次地从不同地方重新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收回????
如果不是,那是怎样?????请说明。谢谢!!
...全文
229 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代码实现算法仿真与结果验证。文中详细介绍了算法的优化策略、适应度函数设计、约束处理机制以及多目标优化的实现方式,展示了改进算法在收敛速度、全局寻优能力和稳定性方面的优势。; 适合人群:具备一定算法基础和Matlab编程能力的研究生、科研人员及从事无人机、智能优化算法相关工作的工程技术人员。; 使用场景及目标:①用于无人机在复杂三维环境中的路径规划与避障;②比较不同智能优化算法(如遗传算法、粒子群算法及其改进版本)在路径规划中的性能差异;③为相关科研项目或毕业论文提供算法实现参考与代码基础。; 阅读建议:建议结合Matlab代码进行实践操作,重点关注算法改进部分的实现细节,并通过调整参数和环境设置进行仿真实验,深入理解算法性能差异及优化机制。
【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应(Matlab代码实现)内容概要:本文介绍了一种基于数据驱动的结构健康监测(SHM)方法,利用选定位置的引导式兰姆波响应对航空航天等领域的结构进行原位损伤检测,实现对损伤位置与程度的精确评估,相关方法通过Matlab代码实现,具有较强的工程应用价值。文中还提到了该技术在无人机、水下机器人、太阳能系统、四轴飞行器等多个工程领域的交叉应用,展示了其在复杂系统状态监测与故障诊断中的广泛适用性。此外,文档列举了大量基于Matlab/Simulink的科研仿真资源,涵盖信号处理、路径规划、机器学习、电力系统优化等多个方向,构成一个综合性科研技术支持体系。; 适合人群:具备一定Matlab编程基础,从事航空航天、结构工程、智能制造、自动化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于航空航天结构、无人机机体等关键部件的实时健康监测与早期损伤识别;②结合兰姆波信号分析与数据驱动模型,提升复杂工程系统的故障诊断精度与可靠性;③为科研项目提供Matlab仿真支持,加速算法验证与系统开发。; 阅读建议:建议读者结合文档提供的Matlab代码实例,深入理解兰姆波信号处理与损伤识别算法的实现流程,同时可参考文中列出的多种技术案例进行横向拓展学习,强化综合科研能力。
【无人机论文复现】空地多无人平台协同路径规划技术研究(Matlab代码实现)内容概要:本文围绕“空地多无人平台协同路径规划技术”的研究展开,重点在于通过Matlab代码实现对该技术的论文复现。文中详细探讨了多无人平台(如无人机与地面车辆)在复杂环境下的协同路径规划问题,涉及三维空间路径规划、动态避障、任务分配与协同控制等关键技术,结合智能优化算法(如改进粒子群算法、遗传算法、RRT等)进行路径求解与优化,旨在提升多平台系统的协作效率与任务执行能力。同时,文档列举了大量相关研究主题,涵盖无人机控制、路径规划、多智能体协同、信号处理、电力系统等多个交叉领域,展示了该方向的技术广度与深度。; 适合人群:具备一定Matlab编程基础和路径规划背景的研究生、科研人员及从事无人机、智能交通、自动化等相关领域的工程技术人员。; 使用场景及目标:①用于学术论文复现,帮助理解空地协同路径规划的核心算法与实现细节;②支撑科研项目开发,提供多平台协同控制与路径优化的技术参考;③作为教学案例,辅助授智能优化算法在无人系统中的实际应用。; 阅读建议:建议结合提供的Matlab代码进行实践操作,重点关注算法实现流程与参数设置,同时可参照文中列出的其他相关研究方向拓展技术视野,建议按目录顺序系统学习,并充分利用网盘资源进行仿真验证。

111,119

社区成员

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

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

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