如何判断特定ColdFusion变量或ColdFusion范围的每个属性使用了多少内存?

时间:2011-09-02 16:44:12

标签: caching variables memory coldfusion memory-management

我目前正在使用ColdFusion缓存查询。它有几千条记录和大约30列 - 其中大多数是VARCHAR列。我很好奇它使用了多少内存,以确定是否真的值得将它存储在缓存中。如何找出缓存查询和/或任何变量正在使用的内存量(例如,应用程序范围)?

3 个答案:

答案 0 :(得分:2)

如果您正在使用CF Enterprise(或开发人员),则可以从CF管理员和view the memory usage打开服务器监视器。但是,不要在生产系统中这样做,因为内存跟踪器会严重阻碍CF服务器。

答案 1 :(得分:2)

不幸的是,没有CF / Java sizeOf(),人们可能期望找到这样做的东西,这是人们最初期望能够做到的。谷歌“java sizeof”提供的信息比您可能想要阅读的更多信息。

正如丹所说,有服务器监视器,它会做到这一点。如果你想以程序方式查看这类事物,它也有一个API:http://localhost:8500/CFIDE/adminapi/servermonitoring.cfc

文档在这里: http://help.adobe.com/en_US/ColdFusion/9.0/Admin/WSc3ff6d0ea77859461172e0811cbf363cdd-7ff4.html

示例代码:

<cfquery name="q" datasource="cfartgallery">
    SELECT  *
    FROM    artists
</cfquery>
<cfdump var="#q#">

<cfset oAdmin = createObject("component", "cfide.adminapi.administrator")>
<cfset oAdmin.login("pwd", "adminapi")>

<cfset oMonitor = createObject("component", "cfide.adminapi.servermonitoring")>
<cfset aMetrics = oMonitor.getQueryDetails()>
<cfdump var="#aMetrics#">

您需要打开服务器监控才能返回任何内容(为Ray Camden欢呼,帮助我; - )

答案 2 :(得分:1)

Railo中有一个SizeOf(obj)函数,它可以告诉你对象使用了多少内存。

根据设置的简便程度,您可以考虑在Railo上运行应用程序,缓存查询,然后调用SizeOf以获取所需信息。

它可能不会完全相同(取决于内部存储事物的具体情况),但应该给出一个粗略的想法。

(p.s。建议使用Railo进行此测量 - 不建议您完全切换;除非您当然要这样做。)