[−][src]Crate jvm_hprof
A library for parsing hprof files.
See parse_hprof to get started, or see the examples in the repo.
Examples
Iterating across all records to count how many of each record type there are (adapted from
the analyze_hprof
example's record-counts
subcommand):
use std::{fs, collections}; use jvm_hprof::{Hprof, parse_hprof, RecordTag, EnumIterable}; fn count_records(file: fs::File) { let memmap = unsafe { memmap::MmapOptions::new().map(&file) }.unwrap(); let hprof: Hprof = parse_hprof(&memmap[..]).unwrap(); // start with zero counts for all types let mut counts = RecordTag::iter() .map(|r| (r, 0_u64)) .collect::<collections::HashMap<RecordTag, u64>>(); // overwrite zeros with real counts for each record that exists in the hprof hprof .records_iter() .map(|r| r.unwrap().tag()) .for_each(|tag| { counts.entry(tag).and_modify(|c| *c += 1).or_insert(1); }); let mut counts: Vec<(RecordTag, u64)> = counts .into_iter() .collect::<Vec<(jvm_hprof::RecordTag, u64)>>(); // highest count on top counts.sort_unstable_by_key(|&(_, count)| count); counts.reverse(); for (tag, count) in counts { println!("{:?}: {}", tag, count); } }
Modules
heap_dump | Sub records contained in crate::HeapDumpSegment records. |
Structs
Header | Basic metadata about the hprof |
HeapDumpSegment | Contents of a Record with tag RecordTag::HeapDump or RecordTag::HeapDumpSegment. |
Hprof | The top level of data loaded from an .hprof file. |
Id | Ids are used to identify many things in an hprof file: objects, classes, utf8 blobs, etc. |
Ids | Iterator that parses ids. |
LoadClass | Contents of a Record with tag RecordTag::LoadClass. |
Record | The next level down from the Hprof in the hierarchy of data. |
RecordTagIter | |
Records | Iterator over the Record data in an hprof. |
Serial | An alternate means of identification used in parallel with Id. |
StackFrame | Contents of a Record with tag RecordTag::StackFrame. |
StackTrace | Contents of a Record with tag RecordTag::StackTrace. |
SubRecords | Iterator over heap_dump::SubRecord data. |
Utf8 | Contents of a Record with tag RecordTag::Utf8. |
Enums
IdSize | Hprof ids can be 32 or 64 bit, depending on the system and JVM that the hprof was captured on. |
LineNum | A line referenced from a stack frame. |
RecordTag | Indicates what type of data is contained in a particular Record. |
Traits
EnumIterable | Allow iterating over enum variants for enums that have |
Functions
parse_hprof | Entry point for parsing. |