Çdo profilist standard do t'ju ndihmonte në mbledhjen e të dhënave që kërkoni. Për një pamje të shpejtë dhe të pistë: http://docs.oracle.com/javase/7/docs/technotes/guides/management/jconsole.html
megjithatë unë mund të ndihmoj të shpjegoj ciklin e jetës së prototipit i cili mund të qartësojë disa nga pyetjet tuaja.
Në shumicën e zgjidhjeve softuerike ju keni objekte drejtuese të cilat përgjithësisht zbatohen si të vetme, dhe keni objekte të dhënash të instantuara në përgjithësi sipas nevojës.
Në pranverë, të gjitha fasulet e krijuara shënohen si të vetme dhe menaxhohen brenda pranverës.
Kur krijoni një prototip fasule, pranvera thjesht kthen një shembull të ri të asaj fasule, megjithatë ajo menaxhon injeksionin e varësisë së asaj fasule.
so:
@Bean
public String importantString(){
return "Super Important String used throughout the system";
}
Kur keni nevojë për vargun e rëndësishëm në prototip:
@Scope("prototype")
public class MyPrototypeBean{
@Bean("importantString")
private String myString;
public String getString(){
return importantString;
}
}
Spring do të ruajë memorien e vargut të rëndësishëm, por aplikacioni juaj tani do të jetë përgjegjës për trajtimin e ciklit të jetës së prototipit si çdo MyObject() i ri.
public static void main(String[] args){
MyProtoTypeBean myPrototypeBean = context.getBean(MyPrototypeBean.class);
MyProtoTypeBean myPrototypeBean2 = context.getBean(MyPrototypeBean.class);
String importantString = myPrototypeBean.getString();
// each prototoype is reconstructed
assert myProtoTypeBean != myPrototypeBean2;
myPrototypeBean = null;
myPrototypeBean2 = null;
// Since we are now handling the lifecycle of the prototype beans, as soon
//as we clear them and set them to null garbage collection will clear the
//prototype beans but not the importantString singleton
//however spring will still have reference to the singleton string
assert importantString == context.getBean("importantString");
}
Shpresoj se kjo ndihmon!
13.06.2017