可以在Application变量中存储大对象(例如java组件)吗?

Jor*_*kin 6 coldfusion railo cfwheels cfml

我正在开发一个应用程序,它创建并存储与应用程序范围中的本地XMPP服务器的连接.连接方法存储在cfc中,以确保Application.XMPPConnection在每次使用时都已连接并授权,并利用连接向用户发送实时事件.据我所知,这工作正常.但它没有在任何压力下进行测试.

我的问题是:这个设置会在以后引起问题吗?我只是问,因为我找不到其他人以这种方式使用Application变量的证据.如果我不使用railo,我将使用CF的事件网关来完成相同的任务.

Ben*_*oom 7

尺寸本身不是问题.如果您要为每个请求初始化一个对象,则会消耗更多内存.问题是访问.

如果您有大量请求竞争同一对象,则需要测量该对象与实例化的访问时间.请记住,对于数据对象,多个线程可以读取它们.但我的理解是,当调用对象的函数时,它会将该对象锁定到其他线程,直到函数返回为止.

此外,如果对象维护状态,则需要考虑在多个线程获取/设置该数据时要执行的操作.你最终会遇到竞争条件吗?

您可以考虑在会话范围中处理此对象,以便仅对每个用户进行实例化(可能只会生成一个或两个同时请求).