本文整理汇总了Java中sun.jvm.hotspot.oops.DefaultHeapVisitor类的典型用法代码示例。如果您正苦于以下问题:Java DefaultHeapVisitor类的具体用法?Java DefaultHeapVisitor怎么用?Java DefaultHeapVisitor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
DefaultHeapVisitor类属于sun.jvm.hotspot.oops包,在下文中一共展示了DefaultHeapVisitor类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: run
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
@Override
public void run() {
SystemDictionary dictionary = VM.getVM().getSystemDictionary();
Klass klass = dictionary.find("java/security/PrivateKey", null, null);
VM.getVM().getObjectHeap().iterateObjectsOfKlass(new DefaultHeapVisitor() {
@Override
public boolean doObj(Oop oop) {
oop.iterate(new KeyPrinter(), false);
return false;
}
}, klass);
}
开发者ID:odnoklassniki,项目名称:stack-traces-heap-dumps,代码行数:14,代码来源:KeyScanner.java
示例2: instances
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
public List instances(long maxInstances) {
if (!vm.canGetInstanceInfo()) {
throw new UnsupportedOperationException(
"target does not support getting instances");
}
if (maxInstances < 0) {
throw new IllegalArgumentException("maxInstances is less than zero: "
+ maxInstances);
}
final List objects = new ArrayList(0);
if (isAbstract() || (this instanceof InterfaceType)) {
return objects;
}
final Klass givenKls = this.ref();
final long max = maxInstances;
vm.saObjectHeap().iterate(new DefaultHeapVisitor() {
private long instCount=0;
public boolean doObj(Oop oop) {
if (givenKls.equals(oop.getKlass())) {
objects.add(vm.objectMirror(oop));
instCount++;
}
if (max > 0 && instCount >= max) {
return true;
}
return false;
}
});
return objects;
}
开发者ID:arodchen,项目名称:MaxSim,代码行数:34,代码来源:ReferenceTypeImpl.java
示例3: referringObjects
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
public List referringObjects(long maxReferrers) {
if (!vm.canGetInstanceInfo()) {
throw new UnsupportedOperationException(
"target does not support getting instances");
}
if (maxReferrers < 0) {
throw new IllegalArgumentException("maxReferrers is less than zero: "
+ maxReferrers);
}
final ObjectReference obj = this;
final List objects = new ArrayList(0);
final long max = maxReferrers;
vm.saObjectHeap().iterate(new DefaultHeapVisitor() {
private long refCount = 0;
public boolean doObj(Oop oop) {
try {
ObjectReference objref = vm.objectMirror(oop);
List fields = objref.referenceType().allFields();
for (int i=0; i < fields.size(); i++) {
Field fld = (Field)fields.get(i);
if (objref.getValue(fld).equals(obj) && !objects.contains(objref)) {
objects.add(objref);
refCount++;
}
}
if (max > 0 && refCount >= max) {
return true;
}
} catch (RuntimeException x) {
// Ignore RuntimeException thrown from vm.objectMirror(oop)
// for bad oop. It is possible to see some bad oop
// because heap might be iterating at no safepoint.
}
return false;
}
});
return objects;
}
开发者ID:arodchen,项目名称:MaxSim,代码行数:40,代码来源:ObjectReferenceImpl.java
示例4: allObjects
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
public List/*<ObjectReference>*/ allObjects() {
final List objects = new ArrayList(0);
saObjectHeap.iterate(
new DefaultHeapVisitor() {
public boolean doObj(Oop oop) {
objects.add(objectMirror(oop));
return false;
}
});
return objects;
}
开发者ID:arodchen,项目名称:MaxSim,代码行数:12,代码来源:VirtualMachineImpl.java
示例5: objectsByExactType
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
private List/*<ObjectReference>*/ objectsByExactType(ReferenceType type) {
final List objects = new ArrayList(0);
final Klass givenKls = ((ReferenceTypeImpl)type).ref();
saObjectHeap.iterate(new DefaultHeapVisitor() {
public boolean doObj(Oop oop) {
if (givenKls.equals(oop.getKlass())) {
objects.add(objectMirror(oop));
}
return false;
}
});
return objects;
}
开发者ID:arodchen,项目名称:MaxSim,代码行数:14,代码来源:VirtualMachineImpl.java
示例6: objectsBySubType
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
private List/*<ObjectReference>*/ objectsBySubType(ReferenceType type) {
final List objects = new ArrayList(0);
final ReferenceType givenType = type;
saObjectHeap.iterate(new DefaultHeapVisitor() {
public boolean doObj(Oop oop) {
ReferenceTypeImpl curType = (ReferenceTypeImpl) referenceType(oop.getKlass());
if (curType.isAssignableTo(givenType)) {
objects.add(objectMirror(oop));
}
return false;
}
});
return objects;
}
开发者ID:arodchen,项目名称:MaxSim,代码行数:15,代码来源:VirtualMachineImpl.java
示例7: writeClasses
import sun.jvm.hotspot.oops.DefaultHeapVisitor; //导入依赖的package包/类
private void writeClasses() throws IOException {
final Set klasses = new HashSet();
// write class list (id, name) association
SystemDictionary sysDict = VM.getVM().getSystemDictionary();
try {
sysDict.allClassesDo(new SystemDictionary.ClassVisitor() {
public void visit(Klass k) {
try {
klasses.add(k.getAddress());
writeClassLoadRecord(k);
} catch (IOException exp) {
throw new RuntimeException(exp);
}
}
});
} catch (RuntimeException re) {
handleRuntimeException(re);
}
final Symbol javaLangClass = symTbl.probe("java/lang/Class");
System.out.println("Dumping lambda classes");
objectHeap.iterate(new DefaultHeapVisitor() {
@Override
public boolean doObj(Oop oop) {
if (oop instanceof Instance) {
Instance instance = (Instance)oop;
Klass klass = instance.getKlass();
Symbol name = klass.getName();
if (name.equals(javaLangClass)) {
try {
Klass reflectedKlass = objectHeap.getKlassForClass(instance);
if (reflectedKlass != null && !klasses.contains(reflectedKlass.getAddress())) {
klasses.add(reflectedKlass.getAddress());
writeClassLoadRecord(reflectedKlass);
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
return false;
}
});
System.out.println("Done dumping lambda classes");
}
开发者ID:geoff-addepar,项目名称:heap-dump,代码行数:46,代码来源:HeapHprofBinWriter.java
注:本文中的sun.jvm.hotspot.oops.DefaultHeapVisitor类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论