Java-TaOUJVMpAEpIO-±a3I右“%%缶Java-EaOUJVMpAEpIOdiA3d^|£°BlackSwift£-%oEex^OB£©••••入土%IAA右A%1.E2ATQJava-zEa£-iODE2A^OAQ2.JavaClassIA^^pA^a113.JavaClass^OdOpA1^3!4.•'EaOUnativepAEpIO5.1.E2AEQJava-Ea£-iODE2A6A£^•zEaE,3iDdxuAeAU1»^6Eex°d0M^JVMdDpAAapAAU2^DAI^£^dEDidU±aDz6ed^DDE+I^^d^uAeODNiTiiAAaD・x^AxuAe£-iE^dd^a^D§AE»»OEDDD§AE|jAd»ddEd(I[ii£daElzEa3Eiail,AAe»i6|6ApAd-Oain%Bi£•TaiEdO£o1.p^OAd>>D©E^OD^••£^EplOoU^/E%,4i£±EE(?E<<(||IDA-0EIi0EeOAxq-iA>NdE<<i0x6「心比》证疋2.EpfODoAD»-OezDdAD»-£-<±EE^POpAORM£-Json^alopEj£3.EpiO^QTE'/^r^acEYf-iiEE^JDKODpASockctlmplpAEpIO4.f1yxml>>dx0^a£^EMiOdAApx0Ee(DI)£-.x^'/6az|Ai£--(ri-1uAi£--|j¥da2aEdME1|AUi£±E、E(^Retrofitj0Spring»dOBDagger2.JavaClassiA^pA^a11OU^.classiA^^ODf-idOByteA^ADIE^^DDClasspA^^f-ir^yd^MADLoadf-!/s/\八/・・"、八//八・・八/乂〜〜、♦、入"〜~zParse°6£-iJavazuAeE|j%EEI/,EOOO3EaIaIAI%|jA!4a11Ia£-OaAi7,EOOOAjavapAuAi»dOI3IDE2a%|)!40DD2ei"\£typedefstruct{u4magic;/*OxCAFEBABE*/u2minor_version;/*l0EiOD±i^E2e*/u2major_version;/*I0EI6D±1E2e*/u2constant_pool_count;cp_infou2constant_pool[constant_pool_cotint-l];access_flags;u2this_class;u2u2u2//000^super_class;interfaces_count;interfaces[interfaces_count];u2fields_count;field_info//O0O^fields[fields_count];u2methods_count;method_infomethods[methods_count];u2uttributes_count;attribute_infoributes[attributes_count];}ClassBlock;•3£A^,30(constantpool):AaE>€6UCODpADATA(||f6eBSS(|li£-.ia1©3£A^^xOux®j0^••AuME0|j»ddBuoA£*7,EdO^*4■用《0倒OppA050e£©pA'seA八••4八•access_flags:^OClasspAflagDPEI•typedefenum{•ACC_PUBLIC=0x0001,•ACC_FINAL=0x0010,•ACC_SUPER=0x0020,•ACC_INTERFACE=0x0200,•ACC_ACSTRACT=0x0400}AccessFlag•thisclass/superclass/interface:禅u2»入OQe£-Qj63%30OD6eOy|j入p0O£-i%«OULink%xM0DDao入唸Oyi£•filed:xd(||iDAi0£-i^a11iafc9lAtypedefstructfieldblock{char*name;char*type;char*signature;u2access_flags;u2constant;union{union{chardata[8];uintptr_tu;longlong1;void*p;inti;}st且tic_value;u4offset;}U;}FieldBlock;•method:Ia^descriptor,access_flags,CodepEE^Oyf^^OJd3£A^30£°Eu)jA!4a11iaE?IA£-IeIidUOaAimethod_info{u2access_flags;u2name_index;//theparametersthatthemethodtakesandthe//valuethatitreturnu2descriptor_index;u2attributes_count;attribute_infoattributes[attributes_count];OOEI%BIaAUEYiEOO2U%1.JVMIApp2.dOd%A^pAi(|[EiEeAi^aJavaDeAa»uj-£-.EU%u|jA1uAU%«2€-Ee%®3.d^e^ia^FIpA^ato3・JavaClass^OOOjLiA1^3!ClasspA%6O0O^daOiaA^•MU0»2滋•iyClassLoadeM0DD(|[A宅\\^A-»!4a2Ux^•pU(|||)2*/2!40DDClasspA<clinit>()3dE'A»~j£3.1.Classloader^OOO1^3!ClassLoader6A6u%6d0j^A-»!/26j0»°'ceClass£-'^Ed6f1y7Java>>6OBnative^0DDEpIOi£OUJVMpAnativezuAeOD£->ClassLoaderAlJ2/,i-'»nxAd»>dIB3iO2E«pAHashTabie<stringzciass>£-i6A6UEpIO(||dClassxO!/2UA4-!4aAe06pA^'aef-iEg^HashTableODON%-6DAE»°^£-iOdd±^6g»0»o^£»-xd®£-iOU»npAAaAuo6£-.riy(|IAEiiA%t)i0i0A9EiiuAclassxO^UA^^DdAD^PJVMODnativepAC^Qal-^OxAmallocAU^f^^«O5Oe»o^dUHashTableODj£iAAaeEQ-QEyx^C^6^IAClassLoader|jAA4-3i•find/load:*6«tA%t)-T>dAD»-IaC^nUi£|C13SS反序列化的流程|ClasszDdAD»"MAA^i•link:>u%YClass,^a1,ia3£A^30^0DD-u°ApA^adyi£±EE^OI6%^EaAU^^O%a£-zq^--,/6-,±f£-«nativeinvoker£-',/66^U-!/2-**±i£-ifinalizer°_EypE^x^-jf3.2.3oEi4»-!y3Ip±ClassLoader%Od0Class^aE0°6£-^«^0DDClasspA36E%»-2Ux^i£d^daOzDD<clinit()>|iA%2i-iuAe(Ui6e%2i...