gpt4 book ai didi

java - 出现错误 : Exception in thread "main" while executing program for different loop conditions in static block

转载 作者:行者123 更新时间:2023-12-01 22:29:00 26 4
gpt4 key购买 nike

如果我在静态 block 中将循环条件设置为很小的值(即1000或10000),则程序执行没有问题,它的工作。问题出在给定代码的静态 block 中的循环中。每当我执行下面的代码时,我都会收到异常“找不到主类”请参阅下面的代码:

import java.util.HashMap;
import java.util.Map;
public class TestStatic {
static HashMap<String,Integer> testMap = new HashMap<String,Integer>();

public static void main(String[] args) {
for (Map.Entry<String,Integer> entry : testMap.entrySet()) {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
}
}
static
{
for(int i=0; i< 10000000; i++)
{
testMap.put("key_" + i, i);
}
}
}

但每当我将循环条件的值更改为 1000000 (少一个 0)。该代码工作正常。那么执行静态 block 是否有任何时间限制。我知道大小限制64k,但我只是想澄清一下,发生这种情况是因为此限制或背后有任何其他原因。

最佳答案

你的代码没有任何问题。您不会遇到静态 block 的限制。您只是耗尽了堆内存。映射中的每个键和值都是唯一的,当您在循环条件末尾添加零时,您将创建 10 倍以上的键和值。

运行 java 时,您可以使用 -Xmx 开关增加 Java 堆的大小。例如。使用 -Xmx1024m 为自己分配 1Gb 堆。即使这可能还不够(我还没有进行计算!),但你很快就会发现。

关于java - 出现错误 : Exception in thread "main" while executing program for different loop conditions in static block,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28189637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com