org.eclipse.mat.parser.model

## Class InstanceImpl

- java.lang.Object
- - org.eclipse.mat.parser.model.AbstractObjectImpl
  - - org.eclipse.mat.parser.model.InstanceImpl

All Implemented Interfaces:
  Serializable, IInstance, IObject

Direct Known Subclasses:
  ClassLoaderImpl

    public class InstanceImpl
    extends AbstractObjectImpl
    implements IInstance

Implementation of a plain Java object. This includes field information.

See Also:
  Serialized Form
No Extend:

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.eclipse.mat.snapshot.model.IObject

`IObject.Type`

### Constructor Summary

Constructors
Constructor and Description
`InstanceImpl(int objectId, long address, ClassImpl clazz, List<Field> fields)` Construct a representation of plain java object in the snapshot.

### Method Summary

All Methods Instance Methods Concrete Methods
`Field` `getField(String name)` Returns the field identified by the name.
`List<Field>` `getFields()` Returns all fields of the object.
`long` `getObjectAddress()` Get address for the snapshot object.
`int` `getObjectId()` Get id for the snapshot object.
`List<NamedReference>` `getOutboundReferences()` Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.
`ArrayLong` `getReferences()` Gets the outbound references from this object, as addresses.
`long` `getUsedHeapSize()` Get used heap size of just this object.

### Methods inherited from class org.eclipse.mat.parser.model.AbstractObjectImpl

`equals, getClassAddress, getClassId, getClassSpecificName, getClazz, getComparatorForClassSpecificName, getComparatorForTechnicalName, getComparatorForUsedHeapSize, getDisplayName, getGCRootInfo, getRetainedHeapSize, getSnapshot, getTechnicalName, hashCode, resolveValue, setClassInstance, setObjectAddress, setObjectId, setSnapshot, toString`

### Methods inherited from class java.lang.Object

`getClass, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.eclipse.mat.snapshot.model.IObject

`getClassSpecificName, getClazz, getDisplayName, getGCRootInfo, getRetainedHeapSize, getSnapshot, getTechnicalName, resolveValue`

### Constructor Detail

#### InstanceImpl

    public InstanceImpl(int objectId,
                        long address,
                        ClassImpl clazz,
                        List<Field> fields)

Construct a representation of plain java object in the snapshot.

Parameters:
  `objectId` - the object id
  `address` - the actual address
  `clazz` - the type of the object
  `fields` - the instance fields of the object (the static fields are held in the class)

### Method Detail

#### getObjectAddress

    public long getObjectAddress()

Description copied from interface: `IObject`
Get address for the snapshot object. This is the address at which the object was stored in memory. Use the address only for visualization purposes and try to use the id wherever possible as the snapshot API is optimized to handle ids and not addresses. Addresses are bigger ( `long`), have no consecutive order (with gaps), and are not used for hashing.

Specified by:
  `getObjectAddress` in interface `IObject`
Overrides:
  `getObjectAddress` in class `AbstractObjectImpl`
Returns:
  address for the snapshot object

#### getObjectId

    public int getObjectId()

Description copied from interface: `IObject`
Get id for the snapshot object. The id is not the address, but an internally assigned number fitting into an `int` (this helps reducing the memory footprint of the snapshot considerably - addresses are only used for visualization purposes).

Specified by:
  `getObjectId` in interface `IObject`
Overrides:
  `getObjectId` in class `AbstractObjectImpl`
Returns:
  id for the snapshot object

#### getFields

    public List<Field> getFields()

Description copied from interface: `IInstance`
Returns all fields of the object.

Fields are ordered in such a way, that first fields defined in the current class and then fields of the super class and its super classes are returned. This order is important to know, if a class declares a field by the same name as the class it inherits from.

Specified by:
  `getFields` in interface `IInstance`

#### getField

    public Field getField(String name)

Description copied from interface: `IInstance`
Returns the field identified by the name.

If declares a member variable by the same name as the parent class does, then the result of this method is undefined.

Specified by:
  `getField` in interface `IInstance`

#### getUsedHeapSize

    public long getUsedHeapSize()

Description copied from interface: `IObject`
Get used heap size of just this object.

Specified by:
  `getUsedHeapSize` in interface `IObject`
Specified by:
  `getUsedHeapSize` in class `AbstractObjectImpl`
Returns:
  used heap size of this object

#### getReferences

    public ArrayLong getReferences()

Description copied from class: `AbstractObjectImpl`
Gets the outbound references from this object, as addresses.

Specified by:
  `getReferences` in class `AbstractObjectImpl`
Returns:
  a list of outbound references

#### getOutboundReferences

    public List<NamedReference> getOutboundReferences()

Description copied from interface: `IObject`
Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.

Specified by:
  `getOutboundReferences` in interface `IObject`
Returns:
  list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced