我试图找出整数的平方根,但如果整数值太大,例如2147395599。然后下面的程序给出了这个异常。
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.aakash.BinarySearch.SquareRoot.mySqrt(SquareRoot.java:12)
at com.aakash.BinarySearch.SquareRoot.main(SquareRoot.java:8)
Process finished with exit code 1
平方根程序
package com.aakash.BinarySearch;
import java.util.Arrays;
public class SquareRoot {
public static void main(String[] args) {
int ans = mySqrt(2147395599);
System.out.println(ans);
}
public static int mySqrt(int x) {
int[] arrayUpton = new int[x];
int start =0;
int end = arrayUpton.length-1;
int mid = start + (start-end)/2;
for (int index = start; index <= end; index++) {
arrayUpton[index]=index+1;
}
for (int index = start; index < end; index++) {
if(arrayUpton[index]*arrayUpton[index]==x){
return arrayUpton[index];
} else if (arrayUpton[index]*arrayUpton[index]>x) {
return arrayUpton[index-1];
}
}
return 0;
}
}
您正在尝试分配一个包含近2^31个整数的数组。这将占用8GB,对于您的JVM堆来说(显然)太大了。(它很可能对您的计算机来说太大了。)
但你真正的问题是你的算法。
你不需要分配一个巨大的数组来计算整数平方根。即使通过搜索所有(正)int
值来实现。
考虑一下:您的代码仔细地将每个数组元素设置为比数组下标大一的数字。然后它从数组中检索值以使用它们。但是如果你知道,arrayUpton[i]
包含i1
。。。你不需要取回它。只需将1
添加到i
中,而不是从数组中获取(相同)值。
此外:
当项目由cordova构建时,我得到了Java堆空间错误。该错误是在我将AdmobFree和SocialSharing Plugings安装到项目中时开始的。 我尝试使用cmd命令增加堆空间,但这对我没有帮助。项目看起来编译成功,但我无法在Android Studio上运行。我希望你能帮助我。问候 科尔多瓦构建android检查JavaJDK和Android SDK版本ANDROID_SDK_RO
我试图将整个文件作为字符串对象加载到内存中。但是在应用程序结束后,我的内存不会被释放回垃圾收集器。我知道在内存中读取整个文件是不好的,但是我必须将数据发送到另一个类,有人能帮助我如何做这只是一个流,而不是将整个代码加载到内存中,如果没有,有人能说我现在的代码有什么问题吗
在Ubuntu中,当我运行hadoop示例时: 在日志中,我得到的错误为: 信息映射。JobClient:任务Id:尝试\u 201303251213\u 0012\u m\u000000 \u 2,状态:失败错误:Java堆空间13/03/25 15:03:43信息映射。JobClient:任务Id:trunt\u 201303251213\u 0012\u m\00000 1\u 2,状态:F
已尝试将MAVEN_OPTS设置为: 有什么线索可以解决吗?
我使用的是Spark独立单机,128G内存,32核。以下是我认为与我的问题相关的设置: 我有一个Spark应用程序,其中有1000个设备的循环。对于每个循环(设备),它准备特征向量,然后调用MLLib的k-Means。在循环的第25次到第30次迭代(处理第25次到第30次设备)时,它遇到了错误“Java.lang.OutOfMemoryError:Java堆空间”。 我试着从0.7到0.35进行记
我正在尝试使用scala执行小计算。Im使用datastax-4.6。我有6个节点,每个16gb RAM和8核。当我尝试执行scala程序时,它会显示以下错误。 错误ActorSystemImpl:线程[sparkDriver-akka.actor.default-dispatcher-17]关闭ActorSystem[sparkDriver]java时出现未捕获的致命错误。lang.OutOfM