You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java heap space错误:createPossibleSymbols符号集生成函数运行异常

问题根源

你遇到的Java heap space错误是死循环导致的,问题出在第二个for循环的终止条件写错了:

for (char c = 'a'; c <= (c + possibleSymbols - 10); c++)

这个条件的右侧判断用到了循环变量c本身,每轮循环c自增后,右侧的c + possibleSymbols - 10也会同步增大,条件永远成立,会不断往StringBuilder里追加字符直到耗尽堆内存。

修正方案

把循环终止条件改成和固定的目标上限比较即可,同时补充边界判断兼容异常输入:

public static StringBuilder createPossibleSymbols(int possibleSymbols) {
    StringBuilder symbols = new StringBuilder();
    // 先追加0-9数字
    for (int i = 0; i < 10; i++) {
        symbols.append((char) (i + '0'));
    }
    // 边界处理:输入小于等于10时直接截取对应长度的数字集
    if (possibleSymbols <= 10) {
        return new StringBuilder(symbols.substring(0, possibleSymbols));
    }
    // 计算需要追加的字母数量
    int letterCount = possibleSymbols - 10;
    // 按固定次数追加字母,不会出现死循环
    for (int i = 0; i < letterCount; i++) {
        symbols.append((char) ('a' + i));
    }
    return symbols;
}

逻辑验证

  • 输入10:返回0123456789,符合需求
  • 输入16:返回0123456789abcdef,符合16位字符集要求
  • 输入小于10的数值(如6):返回前6位数字012345,兼容边界场景

内容的提问来源于stack exchange,提问作者grl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:51:00