Tag: stack overflow

扫雷艇stackoverflower

我正在为扫雷编写一种方法,如果那里没有我的话,就会打开一个小区。 如果地雷旁边没有相邻的单元格,它会打开周围没有地雷的单元格。 我经常有这个错误: 线程“AWT-EventQueue-0”中的exceptionjava.lang.StackOverflowError这是我的源代码: public void open(int row, int col) { // row = vertical index of the matrix // col = horizontal index of matrix unclicked–; butt[row][col].setEnabled(false); // disable the called button if (aray[row][col] !=0) // checks if there are no adjacent cells with an adjacent mine count >0 butt[row][col].setText(Integer.toString(aray[row][col])); else{ if(row < size-1){ […]

堆栈消费的变化来自何处?

在从这个问题运行测试代码并摆弄JVM的线程堆栈大小的同时,我发现结果不一定是可重复的:存在堆栈大小的值,程序有时会抛出java.lang.StackOverflowError ,但有时不会 。 我的问题是:“导致堆栈空间消耗变化的原因是什么?” 此外,中断的堆栈可以放在该程序的主线程上吗? 对于其他JVM实现和/或操作系统,结果是否同样不确定? 测试代码 public class PointlessRecursion { private static final long N = 1 << 15; private static long addOne(long n) { return (n < 2) ? n : 1 + (addOne(n – 1)); } public static void main(String[] args) { try { long x = addOne(N); System.out.println(x); assert(x == N); […]

Quicksort(Java)导致stack.verFlow在array.length> 60k

我的代码正常工作(据我所知),直到我的输入数组大小( a.length )大约为62,000,此时我一直得到StackOverFlowError 。 我以前曾使用2次递归调用quicksort (小于和大于数据透视q ),然后我切换到尾递归。 如您所见,我选择了pivot作为数组末尾的值。 我知道这不是选择枢轴的最佳方法,但我仍然不应该看到StackOverFlowError的数组大小这么小,对吗? 可能是什么导致了这个? 提前致谢! 这是我的代码: public static void quicksort(int[] a, int p, int r) { int q; while (p < r) { q = partition(a, p, r); quicksort(a, p, q – 1); p = q + 1; } } public static int partition(int[] a, int p, int r) […]

Hibernate OneToMany java.lang.StackOverflowError

这是我在堆栈上的第一个问题,所以请保持温和:D 我正在尝试创建hibernate OneToMany关系。 当我尝试从我的数据库中获取一些数据时,我得到了StackOverflowError。 但是,当我删除OneToMany部分时,一切正常。 这是我的REST服务的一部分,现在它运行在VMware vFabric Server和MySQL DB上。 获取示例: @Inject private EntityManager entityManager; … entityManager.find(League.class, 1); … entityManager.find(Team.class, 1); MySQL脚本: CREATE TABLE league ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) COLLATE utf8_unicode_ci NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; CREATE TABLE team ( team_id int(11) NOT NULL AUTO_INCREMENT, name varchar(20) […]

简单的QuickSort算法给出堆栈溢出错误?

我的朋友有一个小问题,我知道了。 他写了一个简单的(他在学校里得到它)QuickSort算法它产生了一个StackOverflow错误。 我知道这意味着它在某个地方调用自己递归太多次了,但我无法得到逻辑错误 – 请帮助我! 这是代码(我省略了一些代码,因为它只是在2个文本区域中显示): int array [] = new int [10]; … public static void quicksort (int array[],int l,int r){ int i = l; int j = r; int mitte = array [(l+r)/2]; while (i<j) { while (array[i]<mitte) { i++; } // end of if while (mitte<array[i]) { j–; } // end of […]

在线程“main”中获取exceptionjava.lang.StackOverflowError

我是Java和OOP的新手,这是我的问题。 当我运行以下代码时,我得到了 线程“main”java.lang.StackOverflowError中的exception。 我在代码中遇到的问题是我创建了一个JavaApplication1的对象。类App2没有出现问题。 如果在run方法中创建了对象ja则代码可以正常工作。 你能解释一下为什么吗? package javaapplication1; public class JavaApplication1 { int i, k, j; class App2 { int i = 23; int j = 12; } App2 a2 = new App2(); JavaApplication1 ja = new JavaApplication1(); public void run() { ja.i = 10; a2.i = 26; a2.j = 18; System.out.println(i + “,” + […]

具有显式finalName的Maven将无法正常工作

1.背景 我的maven项目有很多模块和子模块,包含jars和wars ,一切正常。 我也可以在服务器上部署它而没有任何问题。 我决定遵循这个maven命名转换 ,我正在使用project.name和project.build.finalName进行一些测试以获得适当的名称。 我为根工件创建project.name所定义的模式是company-${project.artifactId} ,模块和子模块是${project.parent.name}-${project.artifactId} : 公司的任何伪影的任何-模块1 公司的任何伪影的任何-模块2-任何-submodule1 公司的任何伪影的任何-模块2-任何-submodule2 project.build.finalName的模式是${project.name}-${project.version} : 公司的任何伪影的任何-module1-1.0.jar 公司的任何伪影的任何-模块2-任何-submodule1-2.0.jar 公司的任何伪影的任何-模块2-任何-submodule2-3.0.war 但maven没有生成这些文件,而是给了我一个StackOverflowError 。 2.重现错误的示例 你可以从github克隆这个例子: https : //github.com/pauloleitemoreira/company-any-artifact 在github中,有一个master分支,它将重现此错误。 并且only-modules分支,这是一个使用${project.parent.name}来生成jar finalName的工作示例。 让我们考虑一个带有一个根pom工件,一个pom模块和一个子模块的maven项目。 -any-artifact | |-any-module | |-any-submodule 2.1任何神器 4.0.0 com.company any-artifact pom 1.0-SNAPSHOT company-${project.artifactId} any-module ${project.name}-${project.version} 2.2任何模块 4.0.0 any-artifact com.company 1.0-SNAPSHOT com.company.any-artifact any-module pom ${project.parent.name}-${project.artifactId} any-submodule 2.3 any-submodule 4.0.0 […]

使用quickSort时得到stackoverflower错误,我可以增加堆栈和堆吗?

我可以在java中增加堆栈和堆吗? 我正在使用BlueJ。 ======== 编辑: 这是代码: // ***** Quick-Sort Method ***** public static void quickSort(int[] data, int first, int n) { int p, n1, n2; if(n > 1) { p = partition(data, first, n); n1 = p – first; n2 = n – n1 – 1; quickSort(data, first, n1); quickSort(data, p+1, n2); } } // ***** […]

如何扩展Java堆栈跟踪的大小以查看堆栈的底部? (触发堆栈溢出)

在Java中,有没有办法查看完整的,未截断的堆栈跟踪(例如,通过增加记录的帧数),或以其他方式获取堆栈跟踪的底部 ? 通常情况下,堆栈跟踪从顶部以1024帧的价格被截断,但是对于堆栈溢出问题,这是相当没价值的,因为您确实需要查看是谁进行了触发递归的调用,靠近底部。 更好的是在堆栈中间截断,但显然Sun的JVM不够聪明,无法做到这一点。 甚至可能是一些特殊的Sun特定标志? 我尝试将堆栈大小减小到允许的最小值(-Xss1000),但仍然超过1024帧。 在我的例子中,我正在尝试调试Hadoop映射器中发生的堆栈溢出,但仅限于在非常大的输入上运行时。 我假设问题来了,因为递归操作(Scala的foldRight )正在一个非常大的链表上完成,我需要非递归地重写它……但我需要知道是谁调用了foldRight 。 这是一个直接和间接在很多地方调用的基本例程,我正在使用很多很多代码,所以这是非常不明显的。

在Java 8中实现无堆栈递归

如何在Java中实现无堆栈递归? 似乎最常出现的词是“蹦床”,我不知道这意味着什么。 有人在IN DETAIL中解释如何在Java中实现无堆栈递归吗? 还有什么是“蹦床”? 如果你不能提供其中任何一个,你能指出我正确的方向(即一本书来阅读它或一些教导所有这些概念的教程)?