一个具有100个属性的对象占用的内存空间是否与100个对象相同,每个属性有一个属性?
为对象分配了多少内存?
添加属性时会使用多少额外空间?
这个问题对于嵌入式开发尤为重要.异常处理为生成的二进制输出增加了一些空间.另一方面,没有例外,错误需要以其他方式处理,这需要额外的代码,这最终也会增加二进制大小.
我对你的经历很感兴趣,特别是:
请仅以我的问题为指导.欢迎任何输入.
附录:对于特定的C++对象/可执行文件,是否有任何人具有具体的方法/脚本/工具,它将显示由编译器生成的代码和专用于异常处理的数据结构占用的已加载内存占用的百分比?
Java - 或者至少是Sun的Hotspot JVM - 长期以来因拥有非常大的内存占用而闻名.究竟是什么使JVM获得了这种声誉呢?我对详细的细分感兴趣:运行时(JIT?GC /内存管理?类加载器?)有多少内存与JNI/JVMTI等"辅助"API有关?标准库?(哪些部分得到多少?)任何其他主要组件?
我意识到如果没有具体的应用程序和VM配置,这可能不是直截了当的,所以只是为了至少在某种程度上缩小范围:我主要对默认/典型VM配置和基线控制台"Hello world"应用程序感兴趣以及任何真实的桌面或服务器应用程序.(我怀疑JVM的大部分内容在很大程度上独立于应用程序本身,而且在这部分我想要放大,理想情况下.)
我还有其他一些密切相关的问题:
其他类似的技术,例如.NET/mono,并没有表现出几乎相同的足迹.为什么会这样?
我已经在intarwebs的某个地方读到,很大一部分足迹只是由于标准库的大小.如果是这种情况,那么为什么要预先加载这么多标准库呢?
是否有任何努力(JSR,无论如何)来驯服内存占用?我遇到的最接近的事情是减少JVM的磁盘占用空间的项目.
我确信在过去的十年左右,每个新版本的Java都会有足够的空间.是否有任何特定的数字/图表精确记录了JVM的足迹变化多少?
我已经为我的Main.hs模块实现了一个简单的加载器用于haskell插件.我现在使用的唯一功能是load来自这个网站
查看我编译的应用程序大小,向我展示了x86架构上超过53 MB的可执行文件.我知道GHC的大部分内容都是链接的(由于haskell-source-to-binary-plugin功能),但这对我的目的来说太过分了.
是否有官方批准的方式来削减额外的功能,只保留(dyn-)load?
我有一个C++模板类,它使用3个不同的类型参数进行实例化.有一种方法,类只需要对这些类型中的一种进行处理,而且不会使用其他两种类型进行调用.
是否会生成该方法的对象代码三次(对于实例化模板的所有类型),或者只生成一次对象代码(对于实际使用它的类型)?
我可以看到,.Net Framework 4.0安装程序的beta2只有55MB,而.Net 3.5则为200 + MB,发生了什么?
我正在将Qt用于嵌入式Linux应用程序,并希望尽可能小.目前如果我制作一个静态编译的可执行文件,它将是3.9Mb,几乎只使用我需要的GUI部分.我只需使用qconfig和配置参数就可以达到3.9Mb.我在考虑通过在安装源代码之前修改源代码来确定它可以做多少,如果有人做了这样的事情,你有多小了?谢谢
任何人都可以指出Python运行时占用空间与Java的严重比较吗?
谢谢,Avraham
Lift 2.0带有Actors和StatefulSnippets等对表的印象让我印象深刻,但我有点担心这些东西的内存开销.我的问题是双重的:
如果网络爬虫在网站的足迹上跳舞,他们是否会打开足够的状态对象以淹没适度的VPS(512M)?这个问题非常明显取决于应用程序,但我很好奇是否有人有任何真实世界的数字,他们可以抛弃我.