Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sonots/memprof2
Ruby memory profiler for >= Ruby 2.1.0
https://github.com/sonots/memprof2
Last synced: 7 days ago
JSON representation
Ruby memory profiler for >= Ruby 2.1.0
- Host: GitHub
- URL: https://github.com/sonots/memprof2
- Owner: sonots
- License: mit
- Created: 2014-11-29T08:50:47.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2019-07-05T09:59:34.000Z (over 5 years ago)
- Last Synced: 2024-12-24T07:18:02.858Z (10 days ago)
- Language: Ruby
- Size: 14.6 KB
- Stars: 67
- Watchers: 2
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# memprof2
[![Build Status](https://secure.travis-ci.org/sonots/memprof2.png?branch=master)](http://travis-ci.org/sonots/memprof2)
Memprof2 is a Ruby memory profiler for >= Ruby 2.1.0.
# Installation
Execute
```
$ gem install memprof2
```or ddd the following to your `Gemfile`:
```ruby
gem 'memprof2'
```And then execute:
```plain
$ bundle
```# API
## Memprof2.report
```ruby
Memprof2.start
12.times{ "abc" }
Memprof2.report(out: "/path/to/file")
Memprof2.stop
```Start tracking file/line memory size (bytes) information for objects created after calling `Memprof2.start`, and print out a summary of file:line:class pairs created.
```
480 file.rb:2:String
```*Note*: Call `Memprof2.report` again after `GC.start` to see which objects are cleaned up by the garbage collector:
```ruby
Memprof2.start
10.times{ $last_str = "abc" }puts '=== Before GC'
Memprof2.reportputs '=== After GC'
GC.start
Memprof2.reportMemprof2.stop
```After `GC.start`, only the very last instance of `"abc"` will still exist:
```
=== Before GC
400 file.rb:2:String
=== After GC
40 file.rb:2:String
```*Note*: Use `Memprof2.report!` to clear out tracking data after printing out results.
Use `trace` and `ignore` options to restrict files to report. You can write patterns by regular expressions:
```
Memprof2.start
10.times{ $last_str = "abc" }
GC.start
Memprof2.report!(trace: /file\.rb/, ignore: /ignore_me/, out: "/path/to/file")
Memprof2.stop
```## Memprof2.run
A shorthand for `Memprof2.start/stop` that will start/stop memprof around a given block of ruby code.
```ruby
Memprof2.run do
100.times{ "abc" }
100.times{ 1.23 + 1 }
100.times{ Module.new }
Memprof2.report(out: "/path/to/file")
end
```For the block of ruby code, print out file:line:class pairs for ruby objects created.
```
4000 file.rb:2:String
4000 file.rb:3:Float
4000 file.rb:4:Module
```*Note*: You can call GC.start at the end of the block to print out only objects that are 'leaking' (i.e. objects that still have inbound references).
## Memprof2.run_with_report
A shorthand for `Memprof2.start/report/stop`.
Following codes work exactly same with the above example.
```ruby
Memprof2.run_with_report(out: "/path/to/file") do
100.times{ "abc" }
100.times{ 1.23 + 1 }
100.times{ Module.new }
end
```## ChangeLog
See [CHANGELOG.md](CHANGELOG.md) for details.
## See Also
* [Ruby でラインメモリプロファイラ](http://qiita.com/sonots/items/c14b3e3ca8e6f7dfb651) (Japanese)
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new [Pull Request](../../pull/new/master)## Copyright
Copyright (c) 2014 Naotoshi Seo. See [LICENSE.txt](LICENSE.txt) for details.