使用文件流写字节通过控制台输出进度时出现内存不足的异常
我有以下代码,在编写大文件时会引发内存异常.我缺少什么吗? 我不确定为什么会丢弃内存错误,因为我认为文件流只能使用4096字节来缓冲?我并不完全确定缓冲区的含义,并且会对任何建议表示赞赏. public static async Task CreateRandomFile(string pathway, int size, IProgress prog) { byte[] fileSize = new byte[size]; new Random().NextBytes(fileSize); await Task.Run(() => { using (FileStream fs = File.Create(pathway,4096)) { for (int i = 0; i
0 2024-04-16
编程技术问答社区
为什么耗尽内存取决于对GC.GetTotalMemory的中间调用?
我编写的一个记忆密集型程序耗尽了记忆:抛出了一个outofmemory例外.在减少内存使用情况的尝试期间,我开始调用GC.GETTOTALMEMORY(TRUE)(将总存储器用法写入调试文件),这会触发垃圾收集. 由于某种原因,当调用此功能时,我再也不会出现记忆异常了.如果我再次删除呼叫(保持其他所有内容相同),则例外再次被抛弃.在我的理解中,在记忆压力增加时会自动打电话以收集垃圾,因此我不了解这种行为. 任何人都可以解释为什么只有在没有打电话给GC.Collect的情况下才会抛出不记忆的例外? 更新: 我正在使用VS 2010,但我将应用程序降低到框架3.5.我相信碎片策划确实导致了我的问题. 我做了一些测试:当抛出例外时,呼叫GC.getTotalMemory告诉我我使用的是〜800 * 10^6字节.但是,任务管理器告诉我应用程序使用的是1700 MB.一个相当大的差异.我现在计划只分配一次内存,而永远不要对任何大型阵列进行处理,而是重复使用它们.幸运
0 2024-04-16
编程技术问答社区
C# WCF-客户端/服务器-系统.OutOfMemory 异常
问题. C#WCF客户/服务器应用程序使用Net TCP绑定(发布者/订户模式). 客户端不断使用OutOfMemoryException. 当我与客户端一起运行任务管理器时,我可以看到内存使用列增加直到应用程序崩溃为止. 意图是为客户在单独的机器上运行的多个实例. 方案 我有一个客户端/服务器应用程序. 出版商/订户设计模式. 在服务器端,有6个词典组成一个缓存,每个字典都包含一个自定义对象作为值. 作为循环的一部分,每组词典值每5秒都会更新一次. 在5秒循环的末尾,将6个词典添加到数据合同对象中,每个对象都是不同的数据成员. 然后将数据合同对象通过电线发送给客户,那里还有6个字典. i然后循环浏览每个数据合同词典,然后添加或更新其客户端等效的内容,具体取决于值是否已经存在. 摘要 6个字典服务器端. 数据合同中的6个可序列化词典. 6个可约束词典客户端. WCF使用Net TCP结合以通过电线传输数据. 规格 c#.n
0 2024-04-16
编程技术问答社区
System.OutOfMemoryException-当Entity Framework查询Varbinary类型的过大数据时。
我正在尝试查询包含文件(1,2 GB)的varbinary列. 我正在使用实体框架.请参阅下面: 测试数据库 CREATE TABLE [dbo].[BIGDATA] ( [id] [bigint] IDENTITY(1,1) NOT NULL, [BIGDATA] [varbinary](max) NULL, CONSTRAINT [PK_BIGDATA] PRIMARY KEY CLUSTERED ([id] ASC) ) ON [PRIMARY] 测试数据(具有1 GB的任何文件) INSERT INTO [dbo].[BIGDATA]([BIGDATA]) VALUES ((SELECT BulkColumn FROM OPENROWSET(BULK N'C:\BigTest.txt', SINGLE_BLOB) AS Document)) 控制器下载文件 public FileResult Downloa
0 2024-04-16
编程技术问答社区
ImageList / Image OutOfMemoryException
从成像师那里获得图像时,我一直无法找到问题的解决方案. 我有一个自定义listView控件,它已将其附加到listViewItems绘制的事件.然后,这称为静态方法,该方法旨在绘制该项目. 对于大约300个项目的列表视图,每次滚动列表视图时,我们都会使内存跳高.有问题的代码已被追踪到以下内容: Image image = item.ImageList.Images[item.ImageKey]; if (image != null) { Size imageOffset = new Size((bounds.Width - image.Width) / 2, 2); Point imagePosition = bounds.Location + imageOffset; graphics.DrawImageUnscaled(image, imagePosition); } 似乎(肯定在Winxp上)垃圾收集无法正常工作,从而导致记忆呈螺旋形
0 2024-04-16
编程技术问答社区
GZIP解压缩 C# OutOfMemory
我有许多我从FTP下载的大型GZIP文件(约10MB -200MB)进行解压缩. 所以我尝试使用Google并找到一些用于GZIP减压的解决方案. static byte[] Decompress(byte[] gzip) { using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress)) { const int size = 4096; byte[] buffer = new byte[size]; using (MemoryStream memory = new MemoryStream()) { int count = 0; do
0 2024-04-15
编程技术问答社区
大的、每像素1比特的位图导致OutOfMemoryException
我想做的是从磁盘加载图像并从中创建BitmapSource. 该图像为14043px x 9933px,为B/W(1BPP).但是我遇到了一个OutOfMemoryException,因为以下代码消耗了约800 MB RAM. 以下代码在我的特定文件的尺寸中生成ImageSource. 我这样做是为了查看是否可以在不使用磁盘上使用实际文件的情况下使其正常工作. public System.Windows.Media.ImageSource getImageSource(){ int width = 14043; int height = 9933; List colors = new List(); colors.Add(System.Windows.Media.Colors.Black); colors.Add(Sy
2 2024-04-15
编程技术问答社区
Newtonsoft.Js-在反序列化大对象时出现内存不足的异常
我有一个大约1GB的JSON文件的问题.当我运行以下代码时,我会得到一个不记忆的例外: using (FileStream sr = new FileStream("myFile.json", FileMode.Open, FileAccess.Read)) { using (StreamReader reader = new StreamReader(sr)) { using (JsonReader jsReader = new JsonTextReader(reader)) { JsonSerializer serializer = new JsonSerializer(); dataObject = serializer.Deserialize(jsReader); } } } 例外是由 抛出的 Newtonsoft.Json.Linq.JTokenWriter.WriteValue(Int64 val
0 2024-04-15
编程技术问答社区
当向一个非常大的HashSet<Int32>添加更多项目时,出现OutOfMemoryException。
类型System.OutOfMemoryException试图在HashSet中添加23997908th项目时被抛弃. 我们需要保持高性能的独特集合Int32 .maxvalue,即2147483647. Int32的HashSet可以在其中存储23997907项目.寻找解决此问题的建议. 解决方案 (t)对象(t)对象的容量是该对象可以保留的元素数量.随着元素的添加,对象的容量会自动增加. 如果您使用的是64位系统,则可以增加哈希集的最大容量高达20亿个 通过在运行时环境中设置 gcallyverylargeobjects 的启用属性来设置元素. 您可以从配置文件启用此设置, 检查此 msdn 用于设置配置. 更新: c
0 2024-04-15
编程技术问答社区
IIS中出现内存不足的异常
我有一个具有MVC模板的应用程序,并使用REST. 说我有一个休息呼叫,它打了特定的方法 void sample function() { // connects to db through entity framework // retrieves data and embeds in to list //returns JSON of data received. } 因此,这里的问题是我测量了运行程序所需的内存.这是关于40,000kb的说法.现在,当我给另一个休息呼叫时,内存未在IIS中清除.它从 40,000kb 而不是零开始.在本文中,如果我进行3或4个调用,则没有内存的异常.因此,在每次通话之后,我需要清理IIS内存,而是保留上一个呼叫的内存.我如何才能发布所有先前呼叫的内存.我通过处理模型和所有其他可能性尝试了各种解决方案.如果部署在本地而不是IIS上,则该解决方案似乎有效.有人可以帮我吗? 解决方案 如果垃圾收集是解决方
0 2024-04-14
编程技术问答社区
System.OutOfMemoryException' was thrown-WebClient.DownloadStringAsynch()。
我正在写一个可怜的人加载测试仪,我以为我正在正确管理资源(线程池),但是当我运行以下代码时,我会在呼叫webclient.downloadstringasingashash. 上获得OutofMemoryException. 使用.net4.0,但可以移动到4.5. 问: 什么是修复? 我如何使用httpwebrequest并将其发送为webclient的替代方案? 使用.NET 4.5使用等待(.net4如何用异步调用的线程有什么区别? static void Main(string[] args) { System.Net.ServicePointManager.DefaultConnectionLimit = 200; while (true) { for (int i = 0; i
0 2024-04-14
编程技术问答社区
为什么我的新的XmlTextReader(stream)会在内存中读入许多兆字节,而不是正常的流媒体?
在XML中流入XMLReader时,我会摆脱内存异常!查看内存剖面仪,我们可以看到它正在调用stringBuilder.一遍又一遍地申请,导致大量的128KB缓冲区填充所有内存. 这与"流"相反.它不应该加载超过一个4KB缓冲区. 解决方案 通过.NET源代码阅读,事实证明,有一个" V1COMPAT"模式,确实会读取前进的方式,击败流式传输的目的.那么,如何避免将其进入愚蠢的模式? 事实证明,称为"新的xmltextreader(stream)"和" xmlreader.create(stream)"之间有很大的区别,Microsoft并没有费心记录...而我在任何地方的任何帖子中都找不到. ..前者将其纳入" V1COMPAT"模式!!! soooo,除非您需要XMLReader的行为与.NET 1.1中的表现完全一样,包括不正确的流式行为,否则您永远不要称呼"新的xmltextreader(stream)'...而不是使用'xmlreader.create
0 2024-04-14
编程技术问答社区
如何在C#中打开一个大的文本文件
我有一个文本文件,其中包含约100000篇文章. 文件的结构是: .Document ID 42944-YEAR:5 .Date 03\08\11 .Cat political Article Content 1 .Document ID 42945-YEAR:5 .Date 03\08\11 .Cat political Article Content 2 我想在C#中打开此文件,以通过行处理IT. 我尝试了此代码: String[] FileLines = File.ReadAllText( TB_SourceFile.Text).Split(Environment.NewLine.ToCharArray()); 但它说: 类型例外 " system.outofmemoryException"是 投掷. 问题是如何打开此文件并按行读取IT. 文件大小:564 MB(591,886,626字节) 文
0 2024-04-13
编程技术问答社区
大数组 C# OutOfMemoryException
对于我在C#中的编程练习,我正在尝试创建一系列长期 长度为0x1fffffff(Base10中的536,870,911),但是我得到了系统. 对于构建,我针对X64系统,并在Windows7 X64上运行了带有8GB RAM的VisualStudio2008. 它应该足以容纳数组(它在JDK X64和CPP项目上工作) 有什么想法吗? const long MAX = 0x1fffffff; // 536870911 in base10 program.arr = new long[MAX]; for (long i = 0; i
0 2024-04-13
编程技术问答社区
使用Json序列化对象。Net导致内存不足异常
免责声明:我确实经历了此处提供的大多数解决方案,但其中大多数是在挑选时的OOM例外. 我正在尝试使用json.net将对象(这是一棵树)序列化.对于小对象,一切都很好,但是当我使用大对象尝试时,我会得到OOM异常.由于它可以与相同数据类型的较小对象一起使用,因此假设没有圆形参考(我确实检查了它的数据结构). 有没有办法将对象转换为流(这是Windows Store应用程序)并使用该流来生成JSON? public static async Task SerializeIntoJson(string fileName, StorageFolder destinationFolder, Content content) { ITraceWriter traceWriter = new MemoryTraceWriter(); try { string jsonString = J
0 2024-04-13
编程技术问答社区
创建大量对象时内存不足 C#
我正在处理我的应用程序中的100万个记录,这些记录是从MySQL数据库中检索的.为此,我使用Linq来获取记录并使用.skip()和.take()一次处理250个记录.对于每个检索的记录,我需要创建0到4个项目,然后将其添加到数据库中.因此,必须创建的总项目的平均数量约为200万. IQueryable objectCollection = dataContext.Repository(); int amountToSkip = 0; IList objects = objectCollection.Skip(amountToSkip).Take(250).ToList(); while (objects.Count != 0) { using (dataContext = new LinqToSqlContext(new DataContext())) {
0 2024-04-13
编程技术问答社区
用GC.AddMemoryPressure()防止OutOfMemoryException?
我目前正在调试一种我们在将其显示在系统中之前使用特定文本标记图像的方法. 标签方法目前看起来像这样: private static Image TagAsProductImage(Image image) { try { // Prepares the garbage collector for added memory pressure (500000 bytes is roughly 485 kilobytes). // Should solve some OutOfMemoryExceptions. GC.AddMemoryPressure(500000); using (Graphics graphics = Graphics.FromImage(image)) { // Create font. Font drawFont
0 2024-04-13
编程技术问答社区
Xamarin.Forms ListView在Android上出现OutOfMemoryError异常
任何人曾经尝试过使用包含图像视图的itemTemplate的Xamarin listView?现在,当ListView包含CA 20或更多行时会发生什么? 至于我,我有一个大约4K的.png文件,大约是在图像视图中加载的.在应用程序崩溃之前,最多显示了9-12行.在Android清单中要求大量堆后,该应用在60-70行后崩溃. 我知道Xamarin正在推广使用位磁化类以缩小位图的使用,但是对于Xamarin表单图像视图而言,这并不适用(开箱即用). 我正在尝试使用Imagerender的子类,以查看是否可以添加bitmapfactory.options属性,并且是否可以解决问题. 另外,我可能需要检查Xamarin.forms是否确实处置(回收)屏幕上的ViewCell后包含的位图. 在开始这一旅程之前,我将非常渴望获得任何可以使此问题更容易或更简单的解决方案的评论. 期待... 解决方案 是的,我找到了解决方案.要遵循的代码.但是在此之前,让
0 2024-04-12
编程技术问答社区