Tag: 内存

静态方法内存消耗

我有以下类,具有以下方法: public class Foo { public string A {get;set;} public static Foo New(string a) { Foo newFoo = new Foo(); newFoo.A = a; return newFoo; } } public class Bar { public void SomeMethod() { … Foo anotherFoo = Foo.New(“a”); …. } } 如果Bar类在使用上面的代码的过程中创建Foo,Foo是否会超出范围并获得垃圾收集,或者Foo(因为它使用静态方法)继续引用变量newFoo,因此anotherFoo永远不会去超出范围?

ToolStrip内存泄漏

我一直在使用SWF-ToolStrip解决内存泄漏问题。 根据这个http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=115600#已经解决了。 但这里看起来并非如此。 有谁知道如何解决这个问题?

WPF内存泄漏

我有一个简单的wpf应用程序。 在主窗口中,我有堆栈面板和2个按钮。 第一个按钮添加了100个用户控件(没有任何数据绑定,事件,位图),第二个按钮从面板中删除所有这些控件并调用GC.Collect()。 并且存在一些问题:1。在我第一次单击“删除”按钮后,并非所有内存都释放,我必须单击几次以释放更多内存。 2. 5-10分钟内存释放后,但不会有几兆字节。 例如,在我的应用程序启动后,当我添加500个控件时需要~22mb – 在我第一次点击“删除”按钮后~~~60mb~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ,我不明白这一点,我是WPF的新手,也许我想念一些我想立即释放内存的东西。 namespace WpfApplication10 { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void button1_Click(object sender, RoutedEventArgs e) { int N = 100; //var r = new ActivityStatisticItem(“111”, “222”, DateTime.Now, “333”, 1); for (int i = 0; i < N; i++) { […]

64位VB.NET分配> 2GB的RAM(.NET错误?)

我有一个64位的VB.NET应用程序,并希望分配一个> 2GB的缓冲区。 在下面的代码中,“new”和“ReDim”都抛出“OverflowException”。 当这些函数只接受带符号的32位值时,如何分配> 2GB的缓冲区? (这可能在C#中?) 编辑 – 我正在运行带有4GB RAM的WinXP 64。 昏暗宽度As Long = 19005 昏暗高度As Long = 32768 Dim buffer()By Byte = New Byte((width * height * 4) – 1){} 昏暗的大小As Long =(width * height * 4) – 1 ReDim缓冲区(大小)

将更多项添加到非常大的HashSet 时出现OutOfMemoryException

尝试在HashSet添加23997908th项时抛出类型System.OutOfMemoryException类型的exception。 我们需要维护一个高性能的整数sizeof Int32 .MaxValue集合,即2147483647 。 Int32 HashSet只能存储23997907项目。 寻找解决此问题的建议。

我用List 命中了OutOfMemoryException – 这是限制还是我遗漏了什么?

如果有机会重写,我会,但无论如何,代码如下: List foobar; 然后我们将一堆字符串添加到foobar。 在count = 16777216时,我们达到了内存不足限制。 我的理解是每个字符串的大小不同。 确实在查看数据(不是我的数据),大多数是2或3个字符。 c#中数据的最大限制是多少? 表示最大限制为: 可以存储在List的当前实现中的最大元素数量理论上是Int32.MaxValue – 仅超过20亿。 然而: 在当前的CLR的Microsoft实现中,最大对象大小限制为2GB。 (有可能其他实现,例如Mono,没有这个限制。) 在我的例子中,我有,1600万个结果*几个字节? 任务管理器显示正在使用的演出,但我有8演出的RAM。 16777216(2 ^ 24)似乎是一个相当具体的价值 – 可疑地像一个限制,但我找不到任何文件a)支持这个或b)找到解决方法? 任何帮助,将不胜感激。 一些代码: List returnList = new List(); SqlDataReader dr; // executes a read on a database, have removed that part as that bit works fine if (dr.HasRows) { while (dr.Read()) { […]

你可以阻止内存被交换到磁盘吗?

我想知道是否有可能防止对象(类或结构)的内存被交换到磁盘? 编辑:至于为什么我被告知我将要使用的一些数据无法写入磁盘。 我不希望它留下足够长的时间来换掉数据但是认为值得检查。

需要一次一个地遍历SQL表行(表太大而无法使用adapter.Fill)

我很容易通过这样的小型SQL Server 2005表进行读取: string cmdText = “select * from myTable”; SqlDataAdapter adapter = new SqlDataAdapter(cmdText, connection); DataTable table = new DataTable(); adapter.Fill(table); 不幸的是,这种方法似乎将整个表加载到内存中,这根本不适用于我正在使用的巨大表。 我希望能够一次一行地遍历表,这样一次只需要一行存储在内存中。 有点像: foreach (DataRow row in rowIteratorObject) { // do something using the row // current row goes out of scope and is no longer in memory } 类似于您可以使用StreamReader一次处理一行文本文件的方式,而不是一次性读取所有文本文件。 有没有人知道用表行做这个的方法(或者,如果我咆哮错误的树,另一种解决方案)?

.NET Max Memory即使对于x64程序集也使用2GB

我读过( http://blogs.msdn.com/joshwil/archive/2005/08/10/450202.aspx).NET中对象的最大大小是2 GB。 我是否正确假设如果我有一个占用256 MB内存的对象,因为它是一个引用类型,我可以拥有这些256 MB对象的数组,其中所有对象一起可能占用> 2GB内存,只要大小引用数组的值是否低于2 GB?

使用File.Encrypt加密文件,然后将其解密为内存流

我需要实现一个简单的文件加密,然后在需要时将其解密到内存流。 最简单的方法似乎是使用File.Encrypt执行此操作,但是是否可以将文件解密为内存流,而不是在将文件读取到内存流之前解密文件,从而将文件暴露一段时间? 如果File.Encrypt不是这种情况的最佳方式,你会推荐什么?