Garbage collection (GC) finds unused data objects and reclaims that memory space for use by another process. The New Relic Ruby agent can collect information about how much time is spent in garbage collection for applications running on MRI 1.9.2 or higher or Ruby Enterprise Edition, but you must explicitly enable this feature in your application.
Avoid using garbage collection in production for long periods of time, as it increases overhead.
Enable garbage collection instrumentation
To activate the feature, add the appropriate call in your application initialization.
- MRI 1.9.2 or higher:
- Ruby Enterprise Edition:
For Rails applications, you can either add this call to an initializer in
config/initializers, or add it directly to your
View app-wide GC statistics
To view overall garbage collection statistics:
- Log into New Relic, select a Ruby app, and go to Summary.
- From the APM Summary page, look for GC Execution statistics on the Web transactions time chart.
View detailed GC metrics
To view garbage collection metrics on a per-transaction basis, go to one.newrelic.com > APM > (select a Ruby app) > Transactions > (select a transaction). You can then view the amount of time spent in GC, and the average number of times GC is called for each transaction.
Detailed information includes:
|Garbage collection details||Comments|
|Trend of garbage collection time||Garbage collection usually takes a small amount of time, and therefore the trend line may not be visible in your charts. To view the trend in garbage collection time, navigate to the overview chart or to detailed transaction metrics. Then, hide every chart label except GC Execution by selecting each label.|
|Average number of calls|
For more help
Additional documentation resources include:
- "Eating the 1.9 elephant" blog post (what New Relic discovered when we used garbage collection to fine-tune our own website)
- APM Summary page (features and drill-down details when using the APM Summary page)
- Transactions page (features and drill-down details for transactions)
- Ruby agent configuration (update procedures and configuration file values, including general, proxy, transaction traces, and error collector)