Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SpreadsheetAddRows在中等大小查询中失败 < >编辑:我改变了名字,因为这里有一个类似的问题来描述我的问题,所以我更简洁地说了……这个问题是我的查询结果的电子表格,在我认为中等大小(1600行,27列)的情况下,整个服务器都被炸弹炸毁了,但是这听起来比他的18000行要小得多。_Java_Coldfusion_Jvm_Spreadsheet - Fatal编程技术网

Java SpreadsheetAddRows在中等大小查询中失败 < >编辑:我改变了名字,因为这里有一个类似的问题来描述我的问题,所以我更简洁地说了……这个问题是我的查询结果的电子表格,在我认为中等大小(1600行,27列)的情况下,整个服务器都被炸弹炸毁了,但是这听起来比他的18000行要小得多。

Java SpreadsheetAddRows在中等大小查询中失败 < >编辑:我改变了名字,因为这里有一个类似的问题来描述我的问题,所以我更简洁地说了……这个问题是我的查询结果的电子表格,在我认为中等大小(1600行,27列)的情况下,整个服务器都被炸弹炸毁了,但是这听起来比他的18000行要小得多。,java,coldfusion,jvm,spreadsheet,Java,Coldfusion,Jvm,Spreadsheet,我正在使用一个通过coldfusion 9.0.1 cfstoredproc访问的oracle存储过程,该存储过程完成后将创建一个电子表格供用户下载 问题是大于1200行的结果集返回500个内部服务器错误,700行返回正常,所以我猜这是内存问题 在标准coldfusion外观中,除了500个内部服务器错误之外,我收到的唯一一条消息是小字的“超出了gc开销限制”,并且在页面刷新时仅出现一次,这是指底层Java JVM 我甚至不知道如何去诊断这个 以下是cfstoredproc和电子表格obj的结尾

我正在使用一个通过coldfusion 9.0.1 cfstoredproc访问的oracle存储过程,该存储过程完成后将创建一个电子表格供用户下载

问题是大于1200行的结果集返回500个内部服务器错误,700行返回正常,所以我猜这是内存问题

在标准coldfusion外观中,除了500个内部服务器错误之外,我收到的唯一一条消息是小字的“超出了gc开销限制”,并且在页面刷新时仅出现一次,这是指底层Java JVM

我甚至不知道如何去诊断这个

以下是cfstoredproc和电子表格obj的结尾

 <!--- variables assigned correctly above --->
 <cfprocresult name="RC1"> 
 </cfstoredproc>

 <cfset sObj = spreadsheetNew("reconcile","yes")>
 <cfset SpreadsheetAddRow(sObj, "Column_1, ... , Column27")>

 <cfset SpreadsheetFormatRow(sObj, {bold=TRUE, alignment="center"}, 1)>

 <cfset spreadsheetAddRows(sObj, RC1)>
    <cfheader name="content-disposition" value="attachment; filename=report_#Dateformat(NOW(),"MMDDYYYY")#.xlsx">
 <cfcontent type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" variable="#spreadsheetReadBinary(sObj)#">

我的答案在于coldfusion和一个简单的事实:不要使用SpreadsheetAddRows或SpreadsheetFormatRows等任何相关函数

我的解决方案是执行查询,创建一个xls文件,使用标记cfspreadsheet写入新创建的xls文件,然后服务于浏览器,在服务后删除

使用SpreadsheetAddRows,运行时从1000多行的服务器崩溃到700多行的服务器崩溃需要5分钟 使用上述方法1-1.5秒


如果您对更多的代码感兴趣,我可以提供一些评论,我使用的是coldbox框架,因此我不认为这种特定性会对新的工作流有所帮助

您是否总是得到超出
gc开销限制的错误?该错误表明JVM在垃圾收集上花费了太多时间。如果您可以为JVM分配更多内存,它将解决这个问题。不,我只得到了40次尝试中的一次,我们提升了JVM 3x,这个问题仍然适用