首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Coldfusion运行时源代码

Coldfusion运行时源代码
EN

Stack Overflow用户
提问于 2013-03-08 07:49:51
回答 3查看 707关注 0票数 0

日安,

我想知道是否有可能查看/调试/黑进coldfusion.runtime源代码。

具体地说,我遇到了内存不足的错误,如下所示:

代码语言:javascript
复制
allocLargeObjectOrArray: [C, size 8388624 
java.lang.OutOfMemoryError: allocLargeObjectOrArray: [C, size 8388624 at
java.util.Arrays.copyOf(Arrays.java:2882) at
java.io.CharArrayWriter.write(CharArrayWriter.java:105) at
coldfusion.runtime.CharBuffer.replace(CharBuffer.java:37) at
coldfusion.runtime.CharBuffer.replace(CharBuffer.java:50) at
coldfusion.runtime.NeoBodyContent.write(NeoBodyContent.java:254) at
[My Code]

我想知道CharBuffer替换了什么,为什么,它复制了什么数组,为什么,等等,这样我就可以调优我的代码。

我的代码cfloop遍历一个查询并输出它的字段,包括一个'IIf‘语句和一个'de’函数调用。

我知道我可以修补代码,然后等待它再次崩溃(或不崩溃),但我更愿意看到问题到底是什么,而不是使用试错。

谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-08 23:49:56

第一个选项是设置HeapDumpOnOutOfMemoryError,然后在JHAT中打开转储,查找占用空间的原因。假设出错的代码试图复制一个大的缓冲区,那么内存中应该已经有一个缓冲区了。这应该会给你指出错误的方向

但是,如果您愿意,您几乎可以肯定地执行以下操作:

code

  • Configure

  • Install Eclipse

  • Install其中一个java反编译器为它创建一个新项目

  • cfusion.jar to the project

  • 阅读java ColdFusion以侦听用于调试的端口(-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044)

  • set up cfusion.jar up a breakpoints

  • set up aColdFusion in eclipse,using the port up a-Xdebug session in eclipse,using the port up a
  • up a remote -Xdebug session in eclipse,using the port of

<

  • >F219

这将使您能够在线程出错时停止线程并检查变量。您的代码中似乎有一些东西正在创建一个8.3兆字节的字符串。能够检查内存可能会有很大帮助。

票数 4
EN

Stack Overflow用户

发布于 2013-03-08 20:18:13

获取免费的Java反编译器:http://jd.benow.ca/

在ColdFusion安装目录中搜索cfusion.jar文件。

用反编译器打开它。CharBuffer应该在里面

票数 3
EN

Stack Overflow用户

发布于 2013-03-12 12:06:47

归根结底,它只是取决于Coldfusion如何缓冲它的页面。

它管理自己的java.io.CharArrayWriter实现,请参见第88行,其中每当char[]满时,它将使它的大小加倍。

在我看来是合理的。但是我们的一些页面非常大,8mb * 20个并发页面请求意味着大量的RAM活动。

我只需要努力缩小我们页面的大小...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15284172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档