gpt4 book ai didi

exception - 保存大量记录时的java.lang.OutOfMemoryError

转载 作者:行者123 更新时间:2023-12-01 11:05:38 24 4
gpt4 key购买 nike

我在使用 CFWheels 将大量记录保存到数据库时遇到了问题。这是一个例子:

<cfloop from="1" to="10000" index="i">
<cfset var newUser = model("user").new()>
<cfset newUser.name = "Test"&i>
<cfset newUser.save()>
</cfloop>

这会导致 java.lang.OutOfMemoryError

请帮我解决这个问题。

最佳答案

Looping over multiple database calls leading to OOM is a known ColdFusion bug .幸运的是,有一个解决方法,使用 <cfthread/> .您应该能够这样更改您的代码:

<cfloop from="1" to="10000" index="i">
<cfset threadName = "thread" & createUuid()>
<cfthread name="#threadName#">
<cfset var newUser = model("user").new()>
<cfset newUser.name = "Test"&i>
<cfset newUser.save()>
</cfthread>
<cfthread action="join" name="#threadName#">
</cfloop>

在这种情况下,您使用线程只是为了它的副作用,在不同的上下文中运行,这样它就不会保留在堆上。因此在声明线程后立即加入,所以它实际上并没有并行运行任何东西。

关于exception - 保存大量记录时的java.lang.OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6200524/

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