Java快速生成20亿数字_关于内存:Java-打印10亿到20亿

本文讨论了一种有效的方法来解决在Java中打印大量数字时遇到的内存溢出问题。通过直接将数字写入文本文件而非控制台,避免了内存限制,并成功创建了一个包含十亿个数字的文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我想打印1000000至1999999999。

我以为这是一件容易的事,但是蚀告诉了我一些有关内存错误的信息。 我该怎么办? 我想要一个文本数据,其中所有数字都来自

将1000000000至1999999999分别记录在新行中。 我以为可以在控制台中将它们打印出来,然后将其复制并粘贴到.txt数据中就可以了,但遗憾的是没有。

我的代码:

public static void main(String[] args) {

int number = 1000000000;

do {

System.out.println(number);

number = number +1;

} while (number < 2000000000);

}

您将如何解决此问题?

请帮我。

这可能会正常工作。您面临的问题是数据大小吗?

如果Eclipse内存不足,请尝试增加Eclipse中的内存。

从1 000 000 000开始计数,它停在1 006 000000。我什至不能从控制台复制它。我不明白问题是什么。 @Rangas:如何增加Eclipse的记忆? wenzi:如何直接打印到.txt文件?

检查此链接以更新蚀存储器设置。 stackoverflow.com/questions/2610194/

杜德!您是否真的需要打印出十亿个十位数字来证明您已使用do...while循环来掌握一系列数字?为什么不从100开始到上升到1000?只是在说...

或者假设这与掌握循环无关,但是您确实需要一个十亿个数字的列表,文本文件可能不是存储这些数字的最佳方法。接下来您需要与他们做什么?

是的,我确实需要打印出十亿个十位数的数字。什么都不证明。我无法使用标准编辑器打开它。但发现:emeditor.com

您遇到的问题是因为您正在要求Eclipse在内存中缓冲1,000,000,000 x 11或12个字符。大于20 GB,对于Eclipse进程堆来说显然太大了。

除非您在具有大量RAM的真正高端PC上运行Eclipse,否则该方法根本行不通。即使那样,我也有怀疑。例如,复制和粘贴100亿个字符可能无效。

您需要采取另一种方法。例如让您的应用程序将数字直接写入输出文件。

我只是编写了这段代码,通过运行它,我得到了以下结果:

最终文件:10GB以上

开始时间:2018年10月6日星期六00:00:19 BRT

结束时间:2018年10月6日星期六00:03:25

try {

FileWriter writer = new FileWriter("count.txt");

System.out.println(new Date());

int number = 1000000000;

do {

writer.write(number +"

");

} while (number++ < 2000000000);

System.out.println(new Date());

writer.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

谢谢您的解决方案! 我尝试了一下,但是编辑器无法打开该文件。 您是否知道可以处理此数据量的编辑器?

超过3分钟,而不是几个小时

@Thilo是的,对不起。 我住的地方是凌晨5.00。 我应该去睡觉

@CoreNoob文件将保存在项目的根文件夹中

最好从命令行运行类文件并重定向输出。假设您正在" unixy"类环境中运行。

java Counter > output.txt # This will take lot of time.

根据另一张海报,这不是很糟糕的时间,大约是几分钟(和数十GB的磁盘空间)。 :-)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值