From this blog entry:
For each class loader object, the following details are printed:
- (class_loader) The address of the class loader object – at the snapshot when the utility was run.
- (classes) The number of classes loaded (defined by this loader with the method(java.lang.ClassLoader.defineClass).
- (bytes) The approximate number of bytes consumed by meta-data for all classes loaded by this class loader.
- (parent_loader) The address of the parent class loader (if any).
- (alive?) A “live” or “dead” indication – indicates whether the loader object will be garbage collected in the future.
- (type) The class name of this class loader.
Permanent generation doesn't contain plain objects but class meta-data (See What does PermGen actually stand for?). So, rewriting your statement:
Finally: 1) If I see 500 lines on the report that all list the same type, 2) but they list different class_loader values, 3) then I can add up the values in the bytes column 4) and this will accurately represent how much permgen space is being occupied by meta-data for all classes loaded by class loader objects of the same (SomeClassLoader) class.
"Retained Heap" shown by Eclipse Memory Analyzer tool is referring to heap memory (young + old) consumed by objects.
Permanent generation is outside of the heap (See https://stackoverflow.com/a/12058171/33622) and deals with class metadata.