首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Coldfusion 8中执行CFX标记?

如何在Coldfusion 8中执行CFX标记?
EN

Stack Overflow用户
提问于 2012-05-18 23:35:04
回答 2查看 313关注 0票数 1

在我的公司,我们最近遇到了一些内存问题。我们做的一件事是增加了JRUN中的堆大小,但现在我们注意到了一些副作用。

其中之一是处理图像的CFX标签。当我们使用它时,它有时无法加载我们给它的文件。我们目前的想法是,为了处理图像,必须将整个图像加载到内存中。它似乎只在大文件上抛出错误,这将需要200+ MB的内存来存储整个文件。

我想知道的是Coldfusion是如何处理CFX标签加载和执行的。

我猜主要的问题是CFX是如何执行的:它是作为JRUN下的线程运行的,还是在自己的用户空间中创建的本地Windows进程?如果它是在JRUN下运行的,那么它在执行时会使用什么内存空间,有没有办法对其进行监控?

EN

回答 2

Stack Overflow用户

发布于 2012-05-19 02:25:19

CFX在JRUN下作为线程运行,数据通过JNI层从Java编组到C++。因此,是的,它将使用默认文件open/read (在幕后)将整个图像加载到堆中,然后将二进制文件传递给您的C++标记。在我看来,处理大图像文件(或一般的大文件)一直是CF的一个问题。有一些用于图像处理的“纯Java”解决方案将提供更好的性能-或者您可以使用"imagemagik“之类的解决方案,它将文件名和路径传递给shell,并单独执行。这是我的观点。

票数 1
EN

Stack Overflow用户

发布于 2012-05-19 14:07:57

我认为如果你正在运行一个32位的进程,它只能访问2gig。如果堆是1G的,那么非堆内存将是60-200+ meg,然后为进程运行的每个线程添加内存(当你集群的时候线程的数量会更多),那么有时候你的进程中就没有那么多的内存空间了。另外,据我所知,不同的DLL被映射到内存范围的上半部分的内存空间中,这意味着当你的图像处理标签试图分配非常大的连续内存块(我猜在堆之外)时,没有一个块留给它。这个答案有点推测,所以不要认为它是福音,但它可能是值得看看的程序,可以可视化进程的内存映射。

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

https://stackoverflow.com/questions/10655598

复制
相关文章

相似问题

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