问题标签 [stack-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - 休眠 - 在堆栈上还是在堆上?
作为一名 Java 程序员,你通常会把两个真理放在口袋里:
- 实例变量和对象位于堆上。
- 局部变量和方法位于堆栈上。
现在我几乎在所有事情中都使用了 Hibernate,我意识到我对自己并不确定。
是否有一些好的经验法则来使用休眠并知道你的记忆在哪里?
memory-management - 垃圾收集器是收集堆栈内存、堆内存还是两者兼而有之?
我阅读了很多关于垃圾收集的文章,几乎所有文章都讲述了堆内存。所以我的问题是“垃圾收集收集堆栈内存或堆内存或两者”。
c - 多维数组如何在内存中格式化?
在 C 中,我知道我可以使用以下代码在堆上动态分配一个二维数组:
显然,这实际上创建了一个指向一组单独的一维整数数组的指针的一维数组,当我要求时,“系统”可以弄清楚我的意思:
但是当我静态声明一个二维数组时,如下行...:
...是否在堆栈上创建了类似的结构,或者它完全是另一种形式?(即它是一维指针数组吗?如果不是,它是什么,以及如何找出对它的引用?)
另外,当我说“系统”时,究竟是什么负责解决这个问题?内核?还是C编译器在编译时对其进行排序?
c# - 类的字段,它们存储在堆栈中还是堆中?
我昨天看到一个问题(对我来说)提出了另一个问题。请看下面的代码:
或者在创建 Class1 的实例时,它的字段类型也是在堆上创建的?但是我不明白它什么时候会真正在堆栈上,因为几乎总是需要创建一个对象实例才能使用它的字段。
c++ - linux中进程的堆栈大小是否有限制
Linux中进程的堆栈大小是否有限制?它只是依赖于机器的 RAM 吗?
我想知道这一点以限制对函数的递归调用的深度。
pointers - 获取当前进程堆的起始地址?
我正在探索系统的较低级别的工作原理,并且想知道如何malloc
确定堆的起始地址。堆是在一个恒定的偏移量还是有某种调用来获取起始地址?栈会影响堆的起始地址吗?
c - 堆栈内存有限制吗?
我正在经历其中一个线程。一个程序崩溃了,因为它在函数内本地声明了一个 10^6 的数组。
给出的原因是堆栈上的内存分配失败导致崩溃。
当全局声明相同的数组时,它运行良好。(堆上的内存保存了它)。
现在,让我们假设,堆栈向下增长并向上堆。
我们有:
- -堆 - -
------------------
- -堆 - -
现在,我相信如果在堆栈上分配失败,它也必须在堆上失败。
所以我的问题是:堆栈大小有限制吗?(越界导致程序崩溃)。还是我错过了什么?
android - Android中的堆栈内存
我正在编写一个应用程序,该应用程序具有前台服务、内容提供程序和绑定到服务并使用 AIDL 获取对象列表的 Activity 前端。该服务确实有效并更新了数据库。
如果我将活动打开 4-8 小时以上,然后转到手机 (Nexus One) 设置下的“运行服务”部分,则会显示正在使用的内存量异常大 (~42MB)。
我认为有泄漏。当我检查堆内存时,我得到堆大小:~18MB,~2MB 已分配,~16MB 可用。分析 Eclipse MAT 中的 hprof 似乎很好,这使我推断出堆栈上的内存泄漏。这甚至可能吗?如果是,我能做些什么来阻止或调查泄漏?android的“运行服务”部分报告的内存使用情况是否正确(我认为是)?
另一个注意事项:当 UI 未启动(仅运行服务)时,我无法重现此问题
c++ - 堆/堆栈上的类成员分配?
如果一个类声明如下:
它可以这样做:
一个类是如何在堆上分配的,就像我做MyClass * Mine = new MyClass();
的那样,在第二个示例中,分配的内存是否还分配了 250 个字节以及类实例化?并且该成员在 MyClass 对象的整个生命周期内都有效吗?至于第一个例子,在堆上分配类成员是否可行?
c++ - 堆分配内存的线程安全
我在读这个:http ://en.wikipedia.org/wiki/Thread_safety
以下函数是线程安全的吗?
在文章中它说为了线程安全,您只能使用堆栈中的变量。真的吗?为什么?上述函数的后续调用不会在其他地方分配内存吗?
编辑:啊。看起来我误读了文章的这一部分:
子程序是可重入的,因此是线程安全的,如果
- 它使用的唯一变量来自堆栈
(我认为它的意思是
子程序是可重入的,因此是线程安全的,当且仅当
- 它使用的唯一变量来自堆栈
,根据下面的答案,情况并非如此)