Tag: stack

每个线程都有堆栈空间吗?

如果我理解正确,那么堆栈是针对本地原始的,并且是对堆中对象的引用。 那么如果你有多个线程会发生什么? 它们是否同时共享相同的堆栈空间(但不同的区域),或者JRE切换上下文并在线程之间切换时加载 – 卸载堆栈内容? 或者JRE是否为每个线程分配单独的堆栈?

如何确定最大堆栈大小限制?

我想从Java中以编程方式确定堆栈的最大大小(由-Xss设置的大小)。 我该怎么做呢? 或者,由于我的Java模块也使用本机代码模块,我可以通过JNI执行此操作; 但是怎么样?

在Java中推断方法的堆栈内存使用

我正在尝试确定每个方法在运行时消耗的堆栈内存量。 为了完成这项任务,我设计了这个简单的程序,只强制StackOverflowError , public class Main { private static int i = 0; public static void main(String[] args) { try { m(); } catch (StackOverflowError e) { System.err.println(i); } } private static void m() { ++i; m(); } } 打印一个整数,告诉我m()被调用了多少次。 我手动将JVM的堆栈大小( -Xss VM参数)设置为不同的值(128k,256k,384k),获得以下值: stack i delta 128 1102 256 2723 1621 384 4367 1644 delta由我计算,它是最后一行i和当前行之间的值。 […]

计算方法调用堆栈大小以检查StackOverflowException

今天早上我回答了一个与StackoverflowException相关的问题。 该人询问何时发生Stackoverflowexception 查看此链接在C#,C ++和Java中导致堆栈溢出的最简单方法 所以我的问题是,有没有任何方法可以在程序中动态计算方法调用堆栈大小,然后在调用方法之前应用检查,该方法检查方法调用堆栈是否有空间来容纳它,以防止StackOverflowException。 因为我是一个java人,我正在寻找java,但也寻找与概念相关的解释,没有任何编程语言的限制。

什么是给jvm的线程堆栈大小选项(-Xss)? 为什么Windows PC中至少有68k的限制?

我见过JVM选项-Xss – 它到底做了什么? 这个链接,但我的问题是这个选项是如何有用的。 因为,如果我们为-Xss值设置了一个非常小的限制,那么线程可能无法正常工作,因为它可能会在大多数情况下抛出stackOverflow错误。 为什么这个值至少有64k的限制? 我是如何得到这个64k限制的,当我试图在IntelliJ iDE上配置运行时vm选项时,我试图给出一些像10k这样的东西,它弹出这个错误,说它需要至少64k的线程堆栈大小。 另一个问题是,如何从java程序中找到我的嵌入式设备中运行的jvm的默认线程堆栈大小? 谢谢, 森

为什么pop()会参与争论?

快速背景 我是一名Java开发人员,他在我的免费/无聊时间里一直在玩C ++。 前言 在C ++中,您经常会看到pop通过引用获取参数: void pop(Item& removed); 我知道用你删除的内容“填写”参数是很好的。 这完全对我有意义。 这样,要求删除顶部项目的人可以查看删除的内容。 但是,如果我在Java中这样做,我会做这样的事情: Item pop() throws StackException; 这样,在pop之后我们返回:结果为NULL,Item或exception将被抛出。 我的C ++教科书向我展示了上面的例子,但是我看到很多堆栈实现没有参数(例如stl stack )。 问题 如何在C ++中实现pop函数? 奖金 为什么?

括号/括号匹配使用堆栈算法

例如,如果括号/括号在以下内容中匹配: ({}) (()){}() () 依此类推,但如果括号/括号不匹配,则应返回false,例如: {} ({}( ){}) (() 等等。 你能查一下这段代码吗? 提前致谢。 public static boolean isParenthesisMatch(String str) { Stack stack = new Stack(); char c; for(int i=0; i < str.length(); i++) { c = str.charAt(i); if(c == '{') return false; if(c == '(') stack.push(c); if(c == '{') { stack.push(c); if(c == '}') if(stack.empty()) return false; […]