首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在没有OutOfMemoryException的情况下获得列表的序列化大小

在没有OutOfMemoryException的情况下获得列表的序列化大小
EN

Stack Overflow用户
提问于 2013-08-16 07:44:20
回答 1查看 88关注 0票数 0

好的,我知道所有的LOH和大对象(大于85k)和进入LOH的大列表(更多40k元素)。

所以我的问题是,我需要知道在使用XMLSerialiser序列化时列表的大小(我不关心它在内存中占用的空间或类似的事情,我只想知道它在序列化时的大小),但是如果我试图序列化一个包含大元素的大列表,我就会得到OutOfMemoryException (我知道为什么)

我想知道的是:是否可以按元素序列化列表元素,并在循环中累加它的大小,比如://,这将是伪代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
long byteLength = 0;
using(stream)
{
  foreach(element in MyList)
  {
    MemoryStream.Serialise(element);
    byteLength += MemoryStream.Length;

    MemoryStream.Clear();
  }
}

有什么建议吗?

更新:@xanatos解决方案执行我想做的事情,因为它没有在ram中添加一个将存储在LOH中的大型byte[]

正如@Hans Passant所说,我为什么要做这种处理的目的似乎很重要:我想知道一个以XML序列化的列表的字节大小,以便能够根据它的总字节在磁盘上的多个文件中拆分列表。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-16 08:06:08

如果你只需要长度:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class NulStream : Stream
{
    public override bool CanRead
    {
        get { return false;  }
    }

    public override bool CanSeek
    {
        get { return false; }
    }

    public override bool CanWrite
    {
        get { return true; }
    }

    public override void Flush()
    {
    }

    protected long length;

    public override long Length
    {
        get { return this.length; }
    }

    public override long Position
    {
        get
        {
            return this.length;
        }
        set
        {
            throw new NotSupportedException();
        }
    }

    public override int Read(byte[] buffer, int offset, int count)
    {
        throw new NotSupportedException();
    }

    public override long Seek(long offset, SeekOrigin origin)
    {
        throw new NotSupportedException();
    }

    public override void SetLength(long value)
    {
        throw new NotSupportedException();
    }

    public override void Write(byte[] buffer, int offset, int count)
    {
        this.length += count;
    }
}

using (var nul = new NulStream())
{
    xml.Serialize(nul, lst);
    long length = nul.Length;
}

这是一条裸体小溪..。就像NUL文件:-)它会吃掉你扔给它的东西,并且只保存累积长度。

注意,从技术上讲,我可以实现SetLength,而Write应该检查它的参数.但为什么?:-)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18277279

复制
相关文章
在没有 Mimikatz 的情况下操作用户密码
通过利用Mimikatz的 lsadump::setntlm和lsadump::changentlm函数,过去已经涵盖了这两个用例。虽然Mimikatz是最好的攻击工具之一,但我会尽量避免使用它,因为它是反病毒和 EDR 工具的高度目标。在这篇文章中,我将专门讨论用例 #2 — 为横向移动或权限提升重置密码。
Khan安全团队
2022/03/21
2.1K0
V-3-3 在没有vCenter的情况下
在使用vSphere客户端登陆到ESXi服务器的时候,由于没有安装vCenter,而发现无法克隆虚拟机。而如果要安装vCenter的Windows版,有时候需要创建多台Windows Server主机,这种时候可以通过复制ESXi datastore里的虚拟机文件来创建多台相同的Windows Server虚拟机。
py3study
2020/01/07
1.1K0
Sharded:在相同显存的情况下使pytorch模型的参数大小加倍
深度学习模型已被证明可以通过增加数据和参数来改善。即使使用175B参数的Open AI最新GPT-3模型,随着参数数量的增加,我们仍未看到模型达到平稳状态。
deephub
2020/12/24
1.6K0
使用Python,怎么获得文件的大小?
如果你要通过自动化的方式,找到系统中文件大小小于1M的文件或者其他大小的文件,那么今天分享的内容,就可以帮到你。以下就是获得文件大小的程序。
TalkPython
2020/12/29
1K0
在没有品牌忠诚度的时代获得和留住客户(Technology)
从新冠肺炎大流行以来,零售业的格局发生了翻天覆地的变化,刺激了第五代人首次同时进行在线生活、工作和购物。
谭雪儿
2021/01/15
5140
在没有数据的情况下使用贝叶斯定理设计知识驱动模型
数据是模型的基础,但是没有数据只有领域专家也可以很好地描述或甚至预测给定环境的“情况”。我将根据贝叶斯概率来总结知识驱动模型的概念,然后是一个实际教程,以演示将专家的知识转换为贝叶斯模型以进行推理的步骤。我将使用 Sprinkler 系统从概念上解释过程中的步骤:从知识到模型。最后我将讨论复杂的知识驱动模型的挑战,以及由于质疑和提取知识而可能发生的系统错误。所有示例都是使用 python 的 bnlearn 库创建的。
deephub
2021/10/09
2.2K0
在没有数据的情况下使用贝叶斯定理设计知识驱动模型
在没有外链情况下,如何提高PR值?
外链是提高PR值的有利方式,但现在外链建设愈发困难,各家都对自己的网站进行链接屏蔽,即使你的外链建设成功,在代码状态下依然是Nofollow状态,所以seoer对外链格外关注。
蝙蝠侠IT
2021/03/22
5420
在没有外链情况下,如何提高PR值?
OutOfMemoryException异常解析
在国庆休假快结束的最后一天晚上接到了部门老大的电话,某省的服务会出现崩溃问题。需要赶紧修复,没错这次的主角依旧是上次的“远古项目”没有办法同事都在休假没有人能帮忙开电脑远程只能打车去公司。远程链接上服务器之后查看日志发现抛出的堆栈异常信息中包含了这样一句话“OutOfMemoryException”,在A.dll中。
JusterZhu
2022/12/07
2490
OutOfMemoryException异常解析
谷歌AI在没有语言模型的情况下,实现了最高性能的语音识别
谷歌AI研究人员正在将计算机视觉应用于声波视觉效果,从而在不使用语言模型的情况下实现最先进的语音识别性能。
AiTechYun
2019/05/13
9550
谷歌AI在没有语言模型的情况下,实现了最高性能的语音识别
在没有 'try-with-resources' 语句的情况下使用 'xxx' 是什么意思
在没有使用 try-with-resources 语句的情况下使用 xxx,意味着在代码中没有显式地关闭 xxx对象资源,如果没有使用 try-with-resources,那么在使用xxx对象后,需要手动调用 close() 方法关闭xxx对象以释放资源,防止资源泄露。
高久峰
2023/09/30
4.3K0
获得一个结构体做成的表的大小
随便贴点代码,以后没准能用到 点击(此处)折叠或打开 #include <stdio.h> #include <stdlib.h> #include <string.h> struct media_table {         char video_width[8];         char video_bit_rate[8];         char audio_bit_rate[8]; }; struct media_table zetc_table
用户3765803
2019/03/05
4410
神兵利器 - 在没有任何权限的情况下破解任何 Microsoft Windows 用户密码
项目地址:https://github.com/DarkCoderSc/win-brute-logon
Khan安全团队
2022/04/02
1.7K0
神兵利器 - 在没有任何权限的情况下破解任何 Microsoft Windows 用户密码
在没有技术术语的情况下介绍Adaptive、GBDT、XGboosting等提升算法的原理简介
这篇文章将不使用任何的术语介绍每个提升算法如何决定每棵树的票数。通过理解这些算法是如何工作的,我们将了解什么时候使用哪种工具。
deephub
2020/07/14
8970
python比较列表中元素大小和列表中元素的判定
列表的判定主要是判定列表中是否包含某个元素,使用逻辑运算符判定就可以了;列表的比较稍微复杂一些,首先比较的是两个列表中对应元素的大小,如果元素值一样,再比较列表长度。
python自学网
2021/12/01
5.8K0
python比较列表中元素大小和列表中元素的判定
在没有abi文件的情况下调用智能合约方法,web3py实现
前几天,回答了一个问题,感觉还可以,写成一篇文章记录一下。问题在:如何用 web3py 调用闭源合约[2]
Tiny熊
2022/02/22
2.4K0
在没有abi文件的情况下调用智能合约方法,web3py实现
MessagePack Java Jackson 在不关闭输出流(output stream)的情况下序列化多变量
com.fasterxml.jackson.databind.ObjectMapper 在默认的情况下在写出输入后将会关闭输出流(output stream)。
HoneyMoose
2019/08/10
4540
尽量减少网站域名在没有启用 CDN 情况下的各种检测、扫描、测速等操作
今天明月给大家分享个比较可怕的事儿,那就是轻松获取你站点服务器真实 IP 的途径和办法,很多小白站长不知道自己服务器真实 IP 的重要性,因此一些不好的习惯就会暴露你的真实 IP 到网上,从而造成被各种恶意扫描和爬虫抓取骚扰,甚至严重的被人当做练手的 CC/DDos 攻击靶子。
明月登楼的博客
2019/05/15
1.1K0
尽量减少网站域名在没有启用 CDN 情况下的各种检测、扫描、测速等操作
研究人员开发机器学习算法,使其在没有负面数据的情况下进行分类
分类对我们的日常生活至关重要,例如,我们要检测垃圾邮件,虚假的政治新闻,以及一些日常的东西,如物体或面孔。当使用AI时,这些任务基于机器学习中的“分类技术”, 让计算机使用正负数据的边界进行学习,如“正面”数据将是带有幸福面孔的照片,“负面”数据是带有悲伤面部的照片。
AiTechYun
2018/12/24
8080
研究人员开发机器学习算法,使其在没有负面数据的情况下进行分类
点击加载更多

相似问题

获得OutOfMemoryException的Xamarin

98

在序列化到JSON时获得一个OutOfMemoryException?

30

序列化OutOfMemoryException

21

列表中的OutOfMemoryException

11

如何在没有Blob列表迭代的情况下获得Azure blob容器的大小?

216
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文