heap-memory相关内容

堆与堆栈分配的含义(.NET)

来自答案1关于堆和栈,它给我提出了一个问题:为什么知道变量分配在哪里很重要? 在 another answer 有人指出堆栈是快点.这是唯一的暗示吗?有人可以给出一个简单的分配位置更改可以解决问题(例如性能)的代码示例吗? 请注意,这个问题是特定于 .NET 的 1 问题已从 SO 中删除. 解决方案 只要你知道语义是什么,堆栈与堆的唯一后果就是确保你不会溢出堆栈,并且意 ..
发布时间:2022-01-22 12:12:30 C#/.NET

在堆栈上分配的变量上调用 delete

忽略编程风格和设计,对分配在堆栈上的变量调用 delete 是否“安全"? 例如: int nAmount;删除 &nAmount; 或 类示例{上市:样本();~sample() { 删除 &nAmount;}int n数量;} 解决方案 否,在堆栈分配的变量上调用 delete 是不安全的.你应该只对 new 创建的东西调用 delete. 对于每个 malloc 或 ..
发布时间:2022-01-22 12:01:26 C/C++开发

Linux 堆结构和 malloc() 和 free() 的行为

我有一个带有 Linux 2.6 内核的 D​​ebian,我尝试了解堆如何使用 malloc() 和 free() 工作/表现.我试图搜索 malloc() 和 free() 算法和堆结构,但找不到任何有用的东西.不幸的是,我对 Linux 和内存如何工作的了解太少,无法理解 free() 和 malloc() 的源代码. 这是一个示例代码: int main(int argc, cha ..
发布时间:2022-01-20 20:40:46 服务器开发

在堆栈/堆上创建对象?

以下代码在堆栈上创建一个对象: 对象o; 在堆上创建对象时我们可以使用: 对象* o;o = 新对象(); 而不是: Object* o = new Object(); 当我们将堆对象创建分成两行并在第二行(o = new object())调用构造函数时,这是否意味着在第一行(Object* o) 指针是在堆栈上创建的吗?那么 Object o 将对象放入堆栈,而 Object* o ..
发布时间:2022-01-18 23:15:14 C/C++开发

带委托的局部变量

这个显然不是看起来不是最佳实践.有人可以解释为什么这不是最佳实践或它是如何工作的吗?任何提供解释的书籍或文章将不胜感激. //构造函数公共页面索引(){//创建一个局部值string currentValue = "这是第一个值";//在稍后触发的委托中使用局部变量this.Load += delegate(object sender, EventArgs e) {Response.Write( ..
发布时间:2022-01-18 12:13:56 C#/.NET

关于 GHC 实施的好的介绍性文字?

在 Haskell 中编程时(尤其是在解决 Project Euler 问题时,次优的解决方案往往会对 CPU 或内存需求造成压力),我经常对为什么程序的行为方式感到困惑.我查看配置文件,尝试引入一些严格性,选择另一种数据结构,......但大多是在黑暗中摸索,因为我缺乏良好的直觉. 另外,虽然我知道 Lisp、Prolog 和命令式语言的典型实现方式,但我不知道如何实现惰性语言.我也有点好 ..

字符串实习在 Java 7+ 中如何工作?

所以,我意识到我要问的问题与一个被一次又一次殴打致死的话题有关,但是,即使在阅读了我能找到的所有答案和文档之后,我仍然很友善对字符串实习感到困惑.可能是因为我对JVM缺乏了解;也许这是由于 Java 7 中引入的更改贬低了许多上述答案和文档.无论哪种方式,我都被卡住了,我希望有人可以帮助我更清楚地理解这个概念...... String a = "text";字符串 b = 新字符串(“文本"); ..
发布时间:2022-01-16 12:45:02 Java开发

Java 非堆内存和栈内存有什么区别?它们是否相同,如果不同,它们之间有什么区别?

我正在使用 Jconsole 来监控 Java 应用程序.内存选项卡显示不同的堆和非堆内存,例如 堆内存使用情况 非堆内存使用情况 内存池“CMS Old Gen" 内存池“Par Eden Space" 内存池“Par Survivor Space" 内存池“代码缓存" 内存池“CMS Perm Gen" 这些术语之间有什么区别.还请提供一些关于 - 如何通过监控这些参数 ..
发布时间:2022-01-16 12:35:42 Java开发

对象的实例变量存储在 JVM 中的什么位置?

Java中对象的实例变量是否存储在JVM的堆栈或方法区? 另外,我们是否有多个线程的不同实例变量? 如果存储在方法区,实例变量与静态变量存储有何不同? 解决方案 Stack和heap是操作系统分配给JVM的内存,运行在system.堆栈是存储方法和局部变量的内存位置.(变量引用 primitive 或 object 引用也存储在堆栈中).堆是存储对象及其实例变量的内存位置. ..
发布时间:2022-01-16 12:34:05 Java开发

Jmap 无法连接进行转储

我们有一个应用程序的公开测试版,它偶尔会导致堆空间溢出.JVM 的反应是永久休假. 为了分析这一点,我想看看内存失败的地方.Java 不希望我这样做.该进程仍在内存中,但似乎没有被识别为 java 进程. 有问题的服务器是 debian Lenny 服务器,Java 6u14 /opt/jdk/bin# ./jmap -F -dump:format=b,file=/tmp/apidu ..
发布时间:2022-01-16 12:32:42 Java开发

jVisualVM中采样和分析的区别

VisualVM 有两个单独的选项卡用于采样和分析.VisualVM 中的采样和分析有​​什么区别? 解决方案 Sampling 意味着进行大量线程转储并分析堆栈跟踪.这通常更快,不需要在您的字节码中进行运行时更改(这可能会破坏它),但也不太准确. Profiling 表示 检测你的类和方法,所以他们“报告"每当他们运行.这更准确,因为它计算每次检测方法的调用,而不仅仅是在转储完成时 ..
发布时间:2022-01-16 12:32:35 Java开发

堆 vs 堆栈 vs 永久空间

Java 内存空间(Perm Space、Space Stack、Heap Space)有什么区别? JVM 什么时候使用一个或另一个? 如果我使用 Scala/Groovy/等,有区别吗? 解决方案 简单 堆空间:所有活动对象都分配在这里. 堆栈空间:存储对方法调用或变量实例化中变量的对象的引用. Perm 空间:存储加载的类信息 例如: 学生std = new S ..
发布时间:2022-01-16 12:31:34 Java开发

当不再需要时,JVM 是否会将空闲内存返还给操作系统?

我有一个应用程序暂时需要一定数量的内存/堆用于某些进程.给定一个合理的 JVM 最大堆大小值作为选项,JVM 从一个小堆开始,并根据需要向操作系统请求更多内存. 我的问题是,当我的应用程序不再需要太多内存时,JVM 是否会将额外的内存返还给操作系统(例如,用于其他进程).目前,我的应用程序似乎永远保留了该内存,即使不再需要. 解决方案 JVM确实将内存返回给操作系统,但只是很不情愿, ..
发布时间:2022-01-16 12:15:27 Java开发

xmlx 和 MaxRAM JVM 参数有什么区别?

MaxRAM: 基于机器上的内存量.用于堆的内存比例由命令行选项 InitialRAMFraction 和 MaxRAMFraction 控制[...]MaxRAM 的值取决于平台. Xmx: -Xmxn指定内存分配池的最大大小(以字节为单位).此值必须是大于 2MB 的 1024 的倍数.附加字母 k 或 K 表示千字节,或附加 m 或 M 表示兆字节.默认值为 64MB.此值 ..
发布时间:2022-01-16 12:14:58 Java开发

以编程方式设置最大 Java 堆大小

有没有办法以编程方式设置最大 java 堆大小而不是作为 vm 参数? 类似: System.getProperties().put("", "1000m"); 解决方案 不适用于任何 Hotspot JVM.JVM 堆参数只能在命令行中指定,然后在 JVM 的生命周期内固定. 使用 Hotspot Java 实现,“更改"应用程序的堆大小的唯一方法是在具有不同命令行参数的新 J ..
发布时间:2022-01-16 12:06:08 Java开发

鼓励 JVM 进行 GC 而不是增加堆?

(请注意,当我说“JVM"时,我的意思是“热点",我正在运行最新的 Java 1.6 更新.) 示例情况: 我的 JVM 运行时 -Xmx 设置为 1gb.目前,堆分配了 500mb,其中 450mb 被使用.该程序需要在堆上再加载 200 mb.目前,堆中有 300mb 的“可收集"垃圾(我们假设它们都在最老的一代中.) 在正常操作下,JVM 会将堆增加到 700 mb 左右, ..
发布时间:2022-01-16 12:00:29 Java开发

为什么是锯齿形图形?

当我使用 NetBeans 运行下面提到的代码时,分配的堆大小图类似于锯齿形状.我附上了 JVisualVM 的屏幕截图,它以锯齿形显示了堆分配图.该程序是一个打印“Hello, World!"的简单无限循环.进入控制台. 公共类 HelloWorld {公共静态无效主要(字符串一个[]){而(真){System.out.println("你好,世界!");}}} 任何人都可以解释使用堆图形状 ..
发布时间:2022-01-16 12:00:21 Java开发

了解最大 JVM 堆大小 - 32 位与 64 位

我已读取 32 位 Windows 上的最大堆大小为 ~1.5GB,这是由于 JVM 需要连续内存.有人可以解释“连续内存"的概念以及为什么在 Windows 上最多只有 1.5GB 吗? 其次,64 位 Windows 上的最大堆大小是多少,为什么这与 32 位上可用的不同? 解决方案 32位/64位部分与Java无关 事实证明,32 位系统中的内存位置由 32 位无符号整数 ..
发布时间:2022-01-16 11:57:55 Java开发