Technology sharing

JVM affinis

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

JDK architectura

Crucem suggestum features linguarum Java

JVM altiore structura et memoria exemplar

JVM memoria parametri occasus

JVM parametri forma occasus programmatis Verni Booz (Tomcat startup directe additur fasciculi catalina.sh in indice bin):

java -Xms2048M -Xmx2048M -Xmn1024M -Xss512K -XX:MetaspaceSize=256M -XX:MaxMetaspaceSize=256M -jar microservice-eureka-server.jar

finitione:

Minor occasus -Xss, minor numerus aestimatus, qui significat quod pauciores tabulae acervus in ACERVUS filo collocari possunt, at numerus filorum qui aperiri potest, plus in toto JVM erit.

-Xss: ACERVUS magnitudinem cuiusque sequelae, defaltam 1M

-Xms: Pone initialem magnitudinem praesto acervus, defectus 1/64 memoriae corporis

-Xmx: pone magnitudinem maximam praesto acervus, defectus 1/4 corporis memoriae

-Xmn: novae generationis magnitudo

- XX: NewRatio: Defectus 2 significat novam generationem computare pro 1/2 generationis veteris et 1/3 totius cumulum memoriae.

-XX:SurvivorRatio: Defectus 8 significat spatium superstes occupare memoriam Eden 1/8, id est, 1/10 novae generationis memoriam.

Duo JVM parametri circa metaspace sunt: ​​-XX: MetaspaceSize=N et -XX:MaxMetaspaceSize=N

-XX: MaxMetaspaceSize: Metaspatii magnitudinem maximam constitue. Defalta est -1, quod significat terminum non esse, vel solum magnitudine locali limitatum.

- XX: MetaspaceSize: Limen initialem metaspace ad felis Fullgc denota (nulla enim metaspatii magnitudo certa est), in bytes collector hunc valorem accommodet: Si magna spatii quantitas dimissa est, valorem convenienter minuat; Hoc aliud significat ac -XX: PermSize parametrum in versionibus prioribus jdk. -XX: PermSize significat capacitatem initialem generationis permanentis.

Cum metaspace resisiendo plenam GC requirat, haec operatio valde pretiosa est. Si numerus plenae GC incidit in applicatione incipiente, plerumque ex resisione generationis permanentis vel metaspace plerumque commendatur in parametris JVM, MetaspaceSize et MaxMetaspaceSize eiusdem valoris pone, easque majores quam valorem constituo.

Creatio rerum

Object header

In Apparatu virtuali HotSpot, propositio rerum in memoria conditarum in tres areas dividi potest: obiectum capitis (Header), instantia data (Instantiae Data) et alignment Nullam (Padding). Obiectum princeps machinae virtualis HotSpot duas notitias partes includit. Prima pars adhibetur ad reponendas notitias runtimes obiecti ipsius, ut codicem Nullam (HashCode), GC aetatem generationis, vexillum status cincinnum, lock tentum filo. , obversis stamina ID , Favor indiciis , etc. Altera pars obiecti header est ratio monstratoris, quae regula obiecti suo genere metadata.

XXXII frenum object header

LXIV frenum object header

regula compressionem

1. Utens 32-bit indicibus (repono usus 64-bit) in HotSpot in 64-bit suggestu fere 1.5 temporibus plus memoria utens simul etiam GC erit sub pressione maiore

2. Ad memoriam reducendam consummationem in suggestis 64-bit, munus compressionis monstratorem da

3. In jvm, 32-bit inscriptiones usque ad 4G memoriae (2 ad 32 potentiam), quae optimized comprimendo et descriptam objecti monstratorem cum in acervo memoriae reponitur, et decocendo sumendo. ad cpu registri (obiectum monstratorem in acervo Est 32 frena, 35 frena in registro, 2 ad 35 = 32G), praebens jvm ad ampliores figurationes memoriae (minus quam vel 32G) tantum utendo. XXXII frenum oratio

4. Cum acervus memoria minor est quam 4G, non opus est ut monstratorem compressionem efficiat. JVm directe removebit altam 32-bit inscriptionem, hoc est, humilem spatium virtualis inscriptionis utere.

5. Cum acervus memoria maior est quam 32G, monstrator pressio irrita fiet et 64-bit (i.e. 8 bytes) compellare debet obiectum Javae acervus ejua major 32G.

Effugere analysis ac titulum reponenda destinatio in objecto acervus

In hoc casu, JVM potest optimize objecti destinatio memoriae locum convertendo in parametri analysi evadendi (-XX:+DoEscapeAnalysis), ut collocatur in ACERVUS primum per repositum scalarem (prouinciam in ACERVUS). conversus est per default post JDK7.

Repositum scalare: Cum per analysin effugium determinatur objectum extrinsecus accedere non posse, objectum ulterius dissolvi, JVM objectum non creabit, sed membrum objectum variabiles in plures variabiles variabiles hac methodo adhibitas dissolvet. His substitutis membrum variabilium variabilium spatium in ACERVUS vel tabularium collocant, ut nulla sit insufficiens memoria pro obiecto destinatio quia magnum spatium contiguum non est. Admitte scalares parametros repositos (-XX:+ EliminateAllocations), quod est per defaltam post JDK7.

Scalaris et aggregatio quantitatis: scalaris est quantitas quae ulterius dissolvi non potest, et species fundamentalis Iavae scalaris est (ut int, longa et aliae rationes fundamentales notae et species referentiae, etc.). est quantitas quae ulterius dissolvi potest, et haec quantitas vocatur polymerization moles. In JAVA, objecta sunt aggregata quae ulterius dissolvi possunt.

Magna res intrant veteris generationis directe

Magnae res sunt obiectae quae magnam quantitatem spatii memoriae continuae requirunt (ut chordae et vestitus). JVM parameter -XX: PretenureSize Threshold magnitudinem rerum magnarum constituere potest. Si obiectum magnitudinis statutum excedit, protinus in antiquam generationem intrabit et iuvenum generationem non ingredietur.

Exempli gratia: parametros JVM pone: -XX: PretenureSize Threshold=1000000 (unitas est bytes) -XX:+UseSerialGC. Si primum programmata superius exequeris, invenies magnum obiectum directe ad veterem generationem.

Cur sic se habet?

Ad vitandum operationes describendas, cum collocandi memoriam rerum magnarum et efficientiam reducendi.

Object dynamic aetatis iudicium

In area superstes ubi objectum nunc ponitur (unum ex areis, aream ubi objectum ponitur), tota moles objectorum massae major est quam 50% magnitudinem memoriae hujus areae Superstitis (-XX. :TargetSurvivorRatio specificari potest), tunc maior est quam Objecta, quae maximam aetatem huius objecti massam directe ingredi possunt senectutem summa multae aetatis obiecta cum aetate 1 + aetas 2 + aetas n excedit 50 superstes area. Quae quidem regula sperat ea quae diu supersint obiiciet quamprimum senectutem intraturum. Obiectum dynamicae aetatis iudicium mechanismum plerumque utitur post gc minor.

Vetus generatio spatii destinatio mechanism spondet

Ante singulas gc minores in generatione novella, JVM reliquum spatium liberum in generatione antiqua computabit.

Si spatium vacuum minus est quam summa magnitudinum omnium objectorum in iuvenibus generationibus (including objecta purgamenta)

Hoc reprehendo num modulus "-XX:-HandlePromotionFailure" (per defaltam in jdk1.8) constituatur.

Si hic modulus praesens est, inspiciet an magnitudo memoriae in generatione antiqua praesto sit maior quam mediocris rerum magnitudo quae post unamquamque gc priorem minorem aetatem inveteraverunt.

Si effectus prioris gradus minor est quam vel parametri ante non positi, tunc plena gc Urguetur, et vetus generatio et iuvenum generatio simul colligentur obiecti post redivivus "OOM" occurret.

Sed si magnitudo reliquarum rerum superstitum quae movenda sunt ad veterem generationem post gc minorem, adhuc maior est quam spatium in generatione veteri, plena gc etiam Urguet post plenum gc adhuc nullum spatium obiectorum superstitum post gc minorem, erit etiam "OOM" occurs

Reachability analysis algorithmus

In examinandis JVM classium mechanism onerantium ex JDK source code level

Classis loading processus

Classis onerantes et parens legationis mechanism

Cur legatio parentis consilio?

Explicatio Tomcat mos oneratus

Complures classis principalis tomcat onerantes:

commonLoader: Tomcat's oneratus classium fundamentalissimus.

catalinaLoader: Classis privata oneratus receptaculi Tomcat.

sharedLoader: classis oneratus ab unoquoque Webapp communicatur. Classes in via loading omnibus Webapps patent, sed non tomcat continente;

WebappClassLoader: Quisque Webapp scriptor privatus classi oneratus. Classes in itinere onerantium solum apparent in Webapp currenti, sicut onerantium genera in sarcina bellica relatas habent applicationes.

memoria exemplum

Purgamentum collectio algorithmus

quisquiliarum collectori

Exsecutionem underlying algorithm ad quisquiliarum collectione