2011-09-02 32 views
2

我目前在ColdFusion中緩存查詢。它有幾千條記錄和約30列 - 其中大多數是VARCHAR列。我很好奇它使用了多少內存,以確定它是否真的值得將其存儲在緩存中。我如何才能找出緩存查詢和/或任何變量(例如APPLICATION範圍)所使用的內存量?如何判斷一個特定的ColdFusion變量或ColdFusion範圍的每個屬性的內存使用量?

+0

如果任何答案下面是正確的,一定要接受一個。 –

回答

2

如果您使用的是CF Enterprise(或Developer),則可以從CF管理員和view the memory usage打開服務器監視器。儘管如此,不要在生產系統中這樣做,因爲內存跟蹤器可能會嚴重阻塞CF服務器。

+0

您也可以使用ColdFusion開發版本 –

+0

做到這一點我在想FusionReactor是否也可以工作 - 我目前不是用戶,所以我不能肯定地說。 – nykash

+0

我有一個FusionReactor正在運行的安裝,它目前沒有打破內存使用。 –

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#"> 

你需要有服務器監控上電,這歡呼返回任何東西(雷卡姆登幫助我與該位; - )

1

Railo中有一個SizeOf(obj)函數,它可以告訴你一個對象正在使用多少內存。

根據設置的容易程度,您可以考慮在Railo上運行您的應用程序,緩存查詢,然後致電SizeOf以獲取所需的信息。

它可能不會完全相同(取決於內部存儲的具體細節),但應該給出一個粗略的想法。

(附註:只是建議使用Railo該測量 - 不建議您切換完全;當然,除非你想)

+0

酷!這很方便。 –