heap-memory相关内容
来自答案1关于堆和栈,它给我提出了一个问题:为什么知道变量分配在哪里很重要? 在 another answer 有人指出堆栈是快点.这是唯一的暗示吗?有人可以给出一个简单的分配位置更改可以解决问题(例如性能)的代码示例吗? 请注意,这个问题是特定于 .NET 的 1 问题已从 SO 中删除. 解决方案 只要你知道语义是什么,堆栈与堆的唯一后果就是确保你不会溢出堆栈,并且意
..
忽略编程风格和设计,对分配在堆栈上的变量调用 delete 是否“安全"? 例如: int nAmount;删除 &nAmount; 或 类示例{上市:样本();~sample() { 删除 &nAmount;}int n数量;} 解决方案 否,在堆栈分配的变量上调用 delete 是不安全的.你应该只对 new 创建的东西调用 delete. 对于每个 malloc 或
..
我正在使用 Jersey 2.0 开发表单提交服务.该表单包括几个 text 字段和一个 file 字段.我需要提取文件、文件名、文件媒体类型和文件内容类型并将它们保存在对象存储中. @Path("上传")@Consumes({MediaType.MULTIPART_FORM_DATA})@Produces({MediaType.APPLICATION_XML, MediaType.APPLIC
..
我有一个带有 Linux 2.6 内核的 Debian,我尝试了解堆如何使用 malloc() 和 free() 工作/表现.我试图搜索 malloc() 和 free() 算法和堆结构,但找不到任何有用的东西.不幸的是,我对 Linux 和内存如何工作的了解太少,无法理解 free() 和 malloc() 的源代码. 这是一个示例代码: int main(int argc, cha
..
以下代码在堆栈上创建一个对象: 对象o; 在堆上创建对象时我们可以使用: 对象* o;o = 新对象(); 而不是: Object* o = new Object(); 当我们将堆对象创建分成两行并在第二行(o = new object())调用构造函数时,这是否意味着在第一行(Object* o) 指针是在堆栈上创建的吗?那么 Object o 将对象放入堆栈,而 Object* o
..
这个显然不是看起来不是最佳实践.有人可以解释为什么这不是最佳实践或它是如何工作的吗?任何提供解释的书籍或文章将不胜感激. //构造函数公共页面索引(){//创建一个局部值string currentValue = "这是第一个值";//在稍后触发的委托中使用局部变量this.Load += delegate(object sender, EventArgs e) {Response.Write(
..
在 Haskell 中编程时(尤其是在解决 Project Euler 问题时,次优的解决方案往往会对 CPU 或内存需求造成压力),我经常对为什么程序的行为方式感到困惑.我查看配置文件,尝试引入一些严格性,选择另一种数据结构,......但大多是在黑暗中摸索,因为我缺乏良好的直觉. 另外,虽然我知道 Lisp、Prolog 和命令式语言的典型实现方式,但我不知道如何实现惰性语言.我也有点好
..
所以,我意识到我要问的问题与一个被一次又一次殴打致死的话题有关,但是,即使在阅读了我能找到的所有答案和文档之后,我仍然很友善对字符串实习感到困惑.可能是因为我对JVM缺乏了解;也许这是由于 Java 7 中引入的更改贬低了许多上述答案和文档.无论哪种方式,我都被卡住了,我希望有人可以帮助我更清楚地理解这个概念...... String a = "text";字符串 b = 新字符串(“文本");
..
我在 Sonar 中分析一个大型项目并得到以下错误: [sonar:sonar] 03:55:39.511 INFO p.PhasesTimeProfiler - 执行装饰器...构建失败[...][...] java.lang.OutOfMemoryError:Java 堆空间在 org.sonar.batch.index.MeasurePersister.model(MeasurePersi
..
我正在使用 Jconsole 来监控 Java 应用程序.内存选项卡显示不同的堆和非堆内存,例如 堆内存使用情况 非堆内存使用情况 内存池“CMS Old Gen" 内存池“Par Eden Space" 内存池“Par Survivor Space" 内存池“代码缓存" 内存池“CMS Perm Gen" 这些术语之间有什么区别.还请提供一些关于 - 如何通过监控这些参数
..
Java中对象的实例变量是否存储在JVM的堆栈或方法区? 另外,我们是否有多个线程的不同实例变量? 如果存储在方法区,实例变量与静态变量存储有何不同? 解决方案 Stack和heap是操作系统分配给JVM的内存,运行在system.堆栈是存储方法和局部变量的内存位置.(变量引用 primitive 或 object 引用也存储在堆栈中).堆是存储对象及其实例变量的内存位置.
..
我们有一个应用程序的公开测试版,它偶尔会导致堆空间溢出.JVM 的反应是永久休假. 为了分析这一点,我想看看内存失败的地方.Java 不希望我这样做.该进程仍在内存中,但似乎没有被识别为 java 进程. 有问题的服务器是 debian Lenny 服务器,Java 6u14 /opt/jdk/bin# ./jmap -F -dump:format=b,file=/tmp/apidu
..
VisualVM 有两个单独的选项卡用于采样和分析.VisualVM 中的采样和分析有什么区别? 解决方案 Sampling 意味着进行大量线程转储并分析堆栈跟踪.这通常更快,不需要在您的字节码中进行运行时更改(这可能会破坏它),但也不太准确. Profiling 表示 检测你的类和方法,所以他们“报告"每当他们运行.这更准确,因为它计算每次检测方法的调用,而不仅仅是在转储完成时
..
Java 内存空间(Perm Space、Space Stack、Heap Space)有什么区别? JVM 什么时候使用一个或另一个? 如果我使用 Scala/Groovy/等,有区别吗? 解决方案 简单 堆空间:所有活动对象都分配在这里. 堆栈空间:存储对方法调用或变量实例化中变量的对象的引用. Perm 空间:存储加载的类信息 例如: 学生std = new S
..
我有一个应用程序暂时需要一定数量的内存/堆用于某些进程.给定一个合理的 JVM 最大堆大小值作为选项,JVM 从一个小堆开始,并根据需要向操作系统请求更多内存. 我的问题是,当我的应用程序不再需要太多内存时,JVM 是否会将额外的内存返还给操作系统(例如,用于其他进程).目前,我的应用程序似乎永远保留了该内存,即使不再需要. 解决方案 JVM确实将内存返回给操作系统,但只是很不情愿,
..
MaxRAM: 基于机器上的内存量.用于堆的内存比例由命令行选项 InitialRAMFraction 和 MaxRAMFraction 控制[...]MaxRAM 的值取决于平台. Xmx: -Xmxn指定内存分配池的最大大小(以字节为单位).此值必须是大于 2MB 的 1024 的倍数.附加字母 k 或 K 表示千字节,或附加 m 或 M 表示兆字节.默认值为 64MB.此值
..
有没有办法以编程方式设置最大 java 堆大小而不是作为 vm 参数? 类似: System.getProperties().put("", "1000m"); 解决方案 不适用于任何 Hotspot JVM.JVM 堆参数只能在命令行中指定,然后在 JVM 的生命周期内固定. 使用 Hotspot Java 实现,“更改"应用程序的堆大小的唯一方法是在具有不同命令行参数的新 J
..
(请注意,当我说“JVM"时,我的意思是“热点",我正在运行最新的 Java 1.6 更新.) 示例情况: 我的 JVM 运行时 -Xmx 设置为 1gb.目前,堆分配了 500mb,其中 450mb 被使用.该程序需要在堆上再加载 200 mb.目前,堆中有 300mb 的“可收集"垃圾(我们假设它们都在最老的一代中.) 在正常操作下,JVM 会将堆增加到 700 mb 左右,
..
当我使用 NetBeans 运行下面提到的代码时,分配的堆大小图类似于锯齿形状.我附上了 JVisualVM 的屏幕截图,它以锯齿形显示了堆分配图.该程序是一个打印“Hello, World!"的简单无限循环.进入控制台. 公共类 HelloWorld {公共静态无效主要(字符串一个[]){而(真){System.out.println("你好,世界!");}}} 任何人都可以解释使用堆图形状
..
我已读取 32 位 Windows 上的最大堆大小为 ~1.5GB,这是由于 JVM 需要连续内存.有人可以解释“连续内存"的概念以及为什么在 Windows 上最多只有 1.5GB 吗? 其次,64 位 Windows 上的最大堆大小是多少,为什么这与 32 位上可用的不同? 解决方案 32位/64位部分与Java无关 事实证明,32 位系统中的内存位置由 32 位无符号整数
..