内存溢出问题!

public void GetTree(object Class, ref string result)
{
result = result + Class + ",";
DataTable dt = WuQi.Data.DbHelper.ExecuteDataset("select Id from Class where ParentId=" + Class).Tables[0];
if (dt.Rows.Count != 0)
{
foreach (DataRow item in dt.Rows)
{
Class = item["Id"];
GetTree(Class, ref result);
}
}
result += "WuQi.Search";
}
这么一段代码导致内存溢出,还请高手看看哪里出问题了?

C#的代码很少有内存溢出的。你这里肯定是因为用了string的+造成的,string相加需要重新申请新的内存,然后再拷贝相加后的值到新的内存中。你用stringbuilder做string的相加操作就不会有内存溢出的问题了。
stringbuilder的使用如下:
StringBuilder sb=new StringBuilder();
sb.Append("a");
sb.Append("b");
然后得到
sb.ToString()="ab";
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-07
string相加导致申请内存这个是事实,但是有垃圾收集器在是不会导致内存泄露的!

我在result前面加了个ref 就是为了不让string拼接造成不必要的内存申请。。。

result = result + Class + ",";难道这一句还是会导致新内存分配
第2个回答  2011-03-07
内存溢出问题,其实是个很复杂的问题,牵涉到硬件、软件以及使用。 你可以观察一下: 1)发生这种情况,是不是电脑使用了很长一段时间了?如果是的话,让
第3个回答  2020-05-08
建议你,如果有多余电脑,换个别的电脑的内存启一下电脑,如果正常,肯定是内存问题,再就是换别的电脑的硬盘试一下能启起来,说明你的硬件没有问题,反之就是硬件有问题喽!但我估计你是被人用溢出后门攻击了

用友T3查询时提示内存溢出,怎么解决
首先,了解问题的根本原因。内存溢出错误通常表明系统在执行某个操作时消耗的内存超过了可用的内存资源。在用友T3中,这可能与特定的文件或数据库操作有关。方法一:为了解决内存溢出的问题,可以尝试从其他电脑上复制一个名为`ufformat.mdb`的文件。这个文件位于系统的关键目录中,用于存储系统的一些配置信息...

内存溢出(out of memory)是内存不足吗?Outofmemory error怎么解决?_百 ...
内存溢出(out of memory)是指程序运行所需内存超过系统能提供的最大内存量。通俗地说,就是内存不够。常见于大型软件或游戏运行时,当软件或游戏需求的内存远超系统内存时,就会发生内存溢出。出现内存溢出时,系统会提示内存不足,可能自动关闭软件或游戏,重启后可能暂时能运行一段时间。内存溢出问题已...

outofmemory
详细解释如下:一、内存溢出问题的概述 当应用程序运行并消耗过多内存,超出系统分配的内存限制时,就会出现“OutOfMemory”错误。这可能是由于程序本身的内存泄漏、处理大量数据或使用了大量资源导致的。这种情况可能导致程序崩溃或系统响应缓慢。二、“OutOfMemory”错误的原因 1. 内存...

提示内存溢出什么问题
内存溢出是指程序在运行过程中,由于数据量过大或者资源占用过多,超出了系统为其分配的内存空间,从而导致程序无法正常运行的现象。这种情况可能会导致程序崩溃或者运行缓慢。二、内存溢出的原因 内存溢出的原因有很多,主要包括以下几点:1. 代码中存在内存泄漏问题,导致程序不断占用新的内存空间而无法释放。

内存溢出的常见原因及解决方法是什么?
内存溢出的常见原因与解决策略内存溢出是一个棘手的问题,本文将深入探讨其原因和应对方法。首要原因是内存使用过度,如一次性加载大量数据(如数据库查询过多记录),未清理的集合类对象引用,死循环或重复创建对象,第三方软件的bug,以及JVM内存参数设置不足。内存溢出的解决步骤:调整JVM参数:检查启动参数...

导致内存溢出的原因有哪些?内存溢出问题又如何解决
不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。5.检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。第四步,使用内存查看工具动态查看内存使用情况 ...

内存溢出的定义和原因 如何解决内存溢出问题
内存溢出指的是程序运行所需内存超出虚拟机提供的最大内存,导致程序无法正常运行的情况。Java中的内存管理主要涉及对象的分配与释放,程序员无需手动释放内存,由垃圾收集器(GarbageCollection,GC)自动管理。GC会回收不再被引用的对象占用的内存空间,但其机制并不完美,有时会导致内存溢出。原因 1. ...

运行软件说内存溢出是什么意思?
1. **代码问题**:编程时逻辑错误或算法效率低下可能导致内存使用不均衡,导致短时间内消耗大量内存。例如,无限制的递归调用、无限循环或不适当的数据结构使用等,都可能导致内存溢出。2. **服务器问题**:服务器资源限制可能导致内存溢出。服务器的硬件配置(如内存大小)有限,当运行的程序消耗内存...

内存溢出的定义和原因 如何解决内存溢出问题
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。为了解决Java中内存溢出问题,我们首先必须了解Java是如何管理内存的。Java的内存管理就是对象的分配和释放问题。在Java中,内存的分配是由程序完成的,而内存的释放是由垃圾收集器(...

内存溢出的解决方法
是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。检查代码中是否有死循环或递归调用。

相似回答