2009-02-08 43 views
1

如何檢測應用程序是否受內存限制?有某種模式或工具嗎?主要針對C++和C#應用程序......我不認爲Microsoft Visual Studio中有這樣的工具。如何檢測應用程序是否受內存限制?

+0

你的意思是「內存界限」究竟是什麼意思? – 2009-02-08 20:03:25

回答

4

那麼,您可以使用perfmon來查看應用程序要做什麼。查看「.NET CLR內存」計數器 - 有許多可用的選項,例如GC集合(每代),GC花費的時間百分比,每代的大小等等。您還可以指定您只需要查看您的應用程序的數據。

如果這不夠詳細,您需要一個分析器 - 這裏有許多選項,其中包括來自Microsoft的免費CLR Profiler

0

在大多數應用程序中,這些東西實際上很容易檢測到 - 即耗盡內存和應用程序崩潰。 OTOH,如果你的意思是:我的應用程序是通過分配和釋放太多/太頻繁的內存來破壞內存,那麼你有一個問題,即一個分析器在回答時更好。關於使用哪個分析器,堆棧溢出問了幾個問題。

0

分析工具的各種指針都在目標上。但是,根據您的可用工具(和預算;-),有一些低技術方法可以獲得快速提示:

  1. 關閉盒子上的其他所有東西,看看性能是否提高。
  2. 在更多內存的另一個盒子上運行,看看性能是否提高。
  3. 監控運行前,運行中和運行後的磁盤活動並查找峯值。
0

在Linux下,您可以使用由perfmon kernel patches提供的基於硬件的性能監視接口。他們不在主流內核中,目前有兩種競爭方法(在LKML上需要很長時間來決定哪一個更好),但他們都提供對各種硬件計數器的訪問。使用它們可以跟蹤內存帶寬問題,緩存問題等。這是相當低級的東西,但是在性能方面,這些討厭的問題很重要。

我不知道是什麼工具提供了Windows 我認爲,英特爾VTune可以做的伎倆下等效功能......他們聲稱有

強大的Visual Studio和.NET 整合。快速深入查看 源代碼,以確定有問題的代碼行 。

還有一個免費的評估版 - 所以你可以試試看。

相關問題