JavaHprofConfig

Struct JavaHprofConfig 

Source
pub struct JavaHprofConfig {
    pub process_cmdline: Vec<String>,
    pub pid: Vec<u64>,
    pub target_installed_by: Vec<String>,
    pub continuous_dump_config: Option<ContinuousDumpConfig>,
    pub min_anonymous_memory_kb: Option<u32>,
    pub dump_smaps: Option<bool>,
    pub ignored_types: Vec<String>,
}
Expand description

Configuration for managed app heap graph snapshots.

Fields§

§process_cmdline: Vec<String>

Command line allowlist, matched against the /proc//cmdline (not the comm string). The semantics of this field were changed since its original introduction.

On Android T+ (13+), this field can specify a single wildcard (*), and the profiler will attempt to match it in two possible ways:

  • if the pattern starts with a ‘/’, then it is matched against the first segment of the cmdline (i.e. argv0). For example “/bin/e*” would match “/bin/echo”.
  • otherwise the pattern is matched against the part of argv0 corresponding to the binary name (this is unrelated to /proc/pid/exe). For example “echo” would match “/bin/echo”.

On Android S (12) and below, both this pattern and /proc/pid/cmdline get normalized prior to an exact string comparison. Normalization is as follows: (1) trim everything beyond the first null or “@” byte; (2) if the string contains forward slashes, trim everything up to and including the last one.

Implementation note: in either case, at most 511 characters of cmdline are considered.

§pid: Vec<u64>

For watermark based triggering or local debugging.

§target_installed_by: Vec<String>

Only profile target if it was installed by one of the packages given. Special values are:

  • @system: installed on the system partition
  • @product: installed on the product partition
  • @null: sideloaded Supported on Android 12+.
§continuous_dump_config: Option<ContinuousDumpConfig>

Dump at a predefined interval.

§min_anonymous_memory_kb: Option<u32>

Do not profile processes whose anon RSS + swap < given value.

§dump_smaps: Option<bool>

Include the process’ /proc/self/smaps. This only shows maps that:

  • start with /system
  • start with /vendor
  • start with /data/app
  • contain “extracted in memory from Y”, where Y matches any of the above
§ignored_types: Vec<String>

Exclude objects of the following types from the profile. This can be useful if lots of uninteresting objects, e.g. “sun.misc.Cleaner”.

Implementations§

Source§

impl JavaHprofConfig

Source

pub fn min_anonymous_memory_kb(&self) -> u32

Returns the value of min_anonymous_memory_kb, or the default value if min_anonymous_memory_kb is unset.

Source

pub fn dump_smaps(&self) -> bool

Returns the value of dump_smaps, or the default value if dump_smaps is unset.

Trait Implementations§

Source§

impl Clone for JavaHprofConfig

Source§

fn clone(&self) -> JavaHprofConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for JavaHprofConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for JavaHprofConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Hash for JavaHprofConfig

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Message for JavaHprofConfig

Source§

fn encoded_len(&self) -> usize

Returns the encoded length of the message without a length delimiter.
Source§

fn clear(&mut self)

Clears the message, resetting all fields to their default.
Source§

fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message to a buffer. Read more
Source§

fn encode_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message to a newly allocated buffer.
Source§

fn encode_length_delimited( &self, buf: &mut impl BufMut, ) -> Result<(), EncodeError>
where Self: Sized,

Encodes the message with a length-delimiter to a buffer. Read more
Source§

fn encode_length_delimited_to_vec(&self) -> Vec<u8>
where Self: Sized,

Encodes the message with a length-delimiter to a newly allocated buffer.
Source§

fn decode(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes an instance of the message from a buffer. Read more
Source§

fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>
where Self: Default,

Decodes a length-delimited instance of the message from the buffer.
Source§

fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes an instance of the message from a buffer, and merges it into self. Read more
Source§

fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>
where Self: Sized,

Decodes a length-delimited instance of the message from buffer, and merges it into self.
Source§

impl PartialEq for JavaHprofConfig

Source§

fn eq(&self, other: &JavaHprofConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for JavaHprofConfig

Source§

impl StructuralPartialEq for JavaHprofConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.