| Using Massif | 
			
				|   |  |   | 
			
				| Using Memcheck |  | Using Cachegrind | 
		
		Using Massif
		Massif is a Valgrind tool that measures how much heap memory an application uses. Heap memory profiling is useful in determining how to reduce the memory usage of an application. For more information about Massif, refer to 
			http://www.valgrind.org/docs/manual/ms-manual.html.
		
		To use Massif, navigate to Profiling Tools > Profile Configurations to access the 
			
				Profile Configurations
			 menu. Open the 
			
				Valgrind Options
			 tab and choose Massif from the Tool to run: drop-down list.
			
			 
  
		
		Analyzing Massif Profile Results
		Massif distills a large volume of data. The Valgrind plug-in for Eclipse presents three ways to view this data:
		
			- 
				Snapshots Table. Each entry in the Valgrind view contains useful information about each snapshot taken by Massif during the profile run. The peak snapshot is highlighed in bold text.
			
			
			 
		
		
			- 
				Heap Tree. Detailed snapshots are denoted by the Show Heap Tree icon ( 
				 ). Double-clicking any of these snapshots will modify the Valgrind view to display all detailed snapshots. Collapsing each detailed snapshot in this view will display a heirarchy of function calls (i.e. heap tree) detailing the heap allocations used during the snapshot. ). Double-clicking any of these snapshots will modify the Valgrind view to display all detailed snapshots. Collapsing each detailed snapshot in this view will display a heirarchy of function calls (i.e. heap tree) detailing the heap allocations used during the snapshot.
   
 Some functions within the heap tree list a related source file. Double-clicking these functions will open the listed source file and place the insertion point on the specific function responsible for the call.
 You also can also toggle the  Show Heap Tree shortcut on the Valgrind view toolbar to switch between 
				Snapshots Table and 
				Heap Tree views.
			- 
				Heap Chart. The information in the snapshots table is also available in line chart form, displayed in the 
				Heap Chart window. Clicking any data point in the chart will highlight its corresponding snapshot in the snapshot table. Double-clicking on a data point that corresponds to a detailed snapshot will open an editor to one of its function calls. 
				
   
 If a detailed snapshot contains calls to multiple source files (or multiple functions within a source file), double-clicking its corresponding data point on the heap chart will open the 
				
					Open Allocation Function Call
				 menu. Double-clicking a function from the 
				
					Open Allocation Function Call
				 menu will open its corresponding source file and place the insertion point on the specific function responsible for the call.
Configuring a Massif Profile Run
		To configure a Massif profile run, navigate to Profiling Tools > Profile Configurations to access the 
			
				Profile Configurations
			 menu. In the 
			
				Valgrind Options
			 tab, navigate further to 
			
				Massif Options
			. 
			
			 
		
		The 
			
				Massif Options
			 tab allows you to configure the following Massif options:
		
		
			- 
				
					profile heap
				 specifies whether or not heap profiling should be performed. This option is enabled by default. 
			
			- 
				
					profile stack
				 specifies whether or not stack profiling should be performed. This option is disabled by default, as it significantly slows down Massif.
			
			- 
				
					heap allocation threshold
				 specifies the significance threshold for heap allocations (as a percentage). Allocation tree entries that account for less than this will be aggregated. The default value for this option is 1%.
			
			- 
				
					time unit
				 specifies what time unit should be used for the profile. The possible values for this are instructions (default), milliseconds, or bytes.
			
			- 
				
					max snapshots
				 specifies the maximum number of snapshots that the profile should take. The default value for this is 100.
			
			- The 
				
					allocated functions
				 field is identical to the Massif command-line option --alloc-fn=, which allows you to specify any function to be treated as a heap allocation function. To add or remove functions to this field, use the New or Remove buttons. You can specify multiple functions in this field.
			- 
				
					administrative bytes per block
				 is identical to the Massif command-line option --heap-admin=, which specifies the number of administrative bytes (per block) to use if heap profiling is enabled. The default value for this option is 8.
			- 
				
					allocation tree depth
				 is identical to the Massif command-line option --depth=, which specifies the maximum depth of the allocation trees recorded for detailed snapshots. The default value for this option is 30.
			- 
				
					allocation peak inaccuracy
				 is identical to the Massif command-line option --peak-inaccuracy=. Massif records a peak only when the global memory allocation size exceeds the previous peak by the specified percentage value of this option. The default value for this option is 1.
			- 
				
					detailed snapshot frequency
				 specifies the frequency at which Massif should take detailed snapshots. The default value for this option is 10; to specify that each snapshot should be detailed, set this option to 1.
			
			- 
				
					minimum heap block alignment
				 specifies the minimum alignment (i.e. size) of heap blocks. 
			
For more information about each Massif option in the Valgrind plug-in for Eclipse, refer to man valgrind.
		
			
				|   |   |   | 
			
				| Using Memcheck |  | Using Cachegrind |