diff --git a/indra/llcommon/llmemory.cpp b/indra/llcommon/llmemory.cpp
index e4ece78d534a0b4718d914990734c592d32d2601..f340105f576fae307bc6b0b640a14e2514425949 100644
--- a/indra/llcommon/llmemory.cpp
+++ b/indra/llcommon/llmemory.cpp
@@ -275,6 +275,7 @@ LLMemTracker::LLMemTracker()
 	mCurIndex = 0 ;
 	mCounter = 0 ;
 	mDrawnIndex = 0 ;
+	mPaused = FALSE ;
 
 	mMutexp = new LLMutex(NULL) ;
 	mStringBuffer = new char*[128] ;
@@ -315,19 +316,25 @@ void LLMemTracker::release()
 //static
 void LLMemTracker::track(const char* function, const int line)
 {
-	static const S32 MIN_ALLOCATION = 1024 ; //1KB
+	static const S32 MIN_ALLOCATION = 0 ; //1KB
+
+	if(mPaused)
+	{
+		return ;
+	}
 
 	U32 allocated_mem = LLMemory::getWorkingSetSize() ;
 
 	LLMutexLock lock(mMutexp) ;
 
-	if(allocated_mem <= mLastAllocatedMem)
+	S32 delta_mem = allocated_mem - mLastAllocatedMem ;
+	mLastAllocatedMem = allocated_mem ;
+
+	if(delta_mem <= 0)
 	{
 		return ; //occupied memory does not grow
 	}
 
-	S32 delta_mem = allocated_mem - mLastAllocatedMem ;
-	mLastAllocatedMem = allocated_mem ;
 	if(delta_mem < MIN_ALLOCATION)
 	{
 		return ;
@@ -353,10 +360,11 @@ void LLMemTracker::track(const char* function, const int line)
 
 
 //static 
-void LLMemTracker::preDraw() 
+void LLMemTracker::preDraw(BOOL pause) 
 {
 	mMutexp->lock() ;
 
+	mPaused = pause ;
 	mDrawnIndex = mCurIndex - 1;
 	mNumOfDrawn = 0 ;
 }
diff --git a/indra/llcommon/llmemory.h b/indra/llcommon/llmemory.h
index e6a6a8c3da2925667f7bce184c2e3b2ee836a9fb..11406f59b016eb656fd167e604f0230e0e4ddd2c 100644
--- a/indra/llcommon/llmemory.h
+++ b/indra/llcommon/llmemory.h
@@ -63,7 +63,7 @@ class LL_COMMON_API LLMemTracker
 	static LLMemTracker* getInstance() ;
 
 	void track(const char* function, const int line) ;
-	void preDraw() ;
+	void preDraw(BOOL pause) ;
 	void postDraw() ;
 	const char* getNextLine() ;
 
@@ -77,6 +77,7 @@ class LL_COMMON_API LLMemTracker
 	S32        mCounter;
 	S32        mDrawnIndex;
 	S32        mNumOfDrawn;
+	BOOL       mPaused;
 	LLMutex*   mMutexp ;
 };
 
diff --git a/indra/newview/llmemoryview.cpp b/indra/newview/llmemoryview.cpp
index 397a77c4e352967bf680ff102610784a6afe7201..7e9c3c84a742147582dbf636ecce9f7c821f9f8a 100644
--- a/indra/newview/llmemoryview.cpp
+++ b/indra/newview/llmemoryview.cpp
@@ -41,6 +41,7 @@
 
 LLMemoryView::LLMemoryView(const LLMemoryView::Params& p)
 :	LLView(p),
+	mPaused(FALSE),
 	//mDelay(120),
     mAlloc(NULL)
 {
@@ -60,6 +61,7 @@ BOOL LLMemoryView::handleMouseDown(S32 x, S32 y, MASK mask)
 	}
 	else
 	{
+		mPaused = !mPaused;
 	}
 	return TRUE;
 }
@@ -172,7 +174,7 @@ void LLMemoryView::draw()
 	}
 
 #else
-	LLMemTracker::getInstance()->preDraw() ;
+	LLMemTracker::getInstance()->preDraw(mPaused) ;
 
 	{
 		F32 x_pos = MARGIN_AMT ;
diff --git a/indra/newview/llmemoryview.h b/indra/newview/llmemoryview.h
index 24ea05827967fb23757ad695b76274b76352b419..9bdc59ab100049d4f21c79acd7e231be4dce55e8 100644
--- a/indra/newview/llmemoryview.h
+++ b/indra/newview/llmemoryview.h
@@ -55,6 +55,7 @@ class LLMemoryView : public LLView
 private:
     std::vector<LLWString> mLines;
 	LLAllocator* mAlloc;
+	BOOL mPaused ;
 
 };