2. Quibus locis includuntur in area notitia runtime?
3. Quae notitia reponitur in acervum et cumulum respective?
4. Cur generationem permanentem (PermGen) cum metaspace (MetaSpace) substituimus?
5. Intellegis fundamenta acervi spatii? Quibus circumstantiis, obicietur vetus generatio?
6. In quo memoria area magnae res positae sunt?
7. Quid est processus creatio obiectis Java?
Quaestio respondere
1. Quae partes habet JVM de quo est?
Responsio: JVM exsecutabile estbytecode Fasciculus computatorius virtualis, qui etiam administrationem memoriae, collectionem purgamentorum et alia machinamenta praebet. Continet partes sequentes principales.
Classis loading subsystem: Responsible pro oneratione imaginum bytecode (.class) in JVM.
Area data runtime: area est memoria in executione JVM adhibita.
Executio engine: Responsible ad interpretandum vel componendum bytecode in machina codice pro processus executione.
Bibliotheca indigena interface: Apis copiam praebet ad bibliothecas indigenas vocandas scriptas in systemate operante vel aliis linguis.
2. Quibus locis includuntur in area notitia runtime?
Responsio: area data runtime est area memoriae JVM partita cum programmata Javae exercens.
Programma contra: Parva spatium memoriae est et inscriptio bytecode instructio- nis nunc e sequela exercetur. Si stamen methodum vernaculam exercet, valor huius calculi indefinitus est.
Java virtualis apparatus ACERVUS: Singula stamina creabit acervum virtualem machinam cum creatur, qui adhibetur ad reponendas tabulae variabilis localis, operandi compagem, nexum dynamicam, modum exitum informationis, etc. Iava machina virtualis ACERVUS plures ACERVUS continet tabulas. Processus ab unaquaque methodo ad executionem vocatus correspondet processui a propellendo ACERVUM in ACERVUM in machina virtuali.
BIBLIOTHECA MODO NATIVA: Est spatium praeparatum per JVM ad methodos Nativos currendi. Similia munera ad acervum machinae virtualis Java habet. Exemplar memoriae est quod processus methodorum indigenarum describit.
Acervus: ad omnia fere instantiarum et vestium objecta reponenda, et est area principalis ubi quisquiliarum collector operatur.
Methodus area: usus ad informationes classium reponendas, constantes, variabiles static, codicem a iusto tempore compilator exaratum, etc. a JVM onustum. Ante JDK1.8, generatio permanens adimpleta est. Proficiscens ab JDK1.8, generatio permanens loco originali substituitur. Metaspace utitur memoria locali magis quam memoria cumulo.
3. Quae notitia reponitur in acervum et cumulum respective?
Responde: Data in acervo condita (Java ACERVUS virtualis apparatus);
Tabulae variabilis localis: Maxime ad modum parametri et variabiles locales intra modum condere solebant.
ACERVUS operand: usus ad instructiones operationis ad tempus reponendas et eventus intermedios per modum executionis.
Coniunctio dynamica: Respectio ad constantem piscinam classis, ad quam methodus pertineat, symbolum ad solutionem indiciorum methodi adhibitam.
Modus reditus inscriptionis: inscriptionis instructionis proximae addit post modum vocationis exsecuta. Data in acervo reposita;
Exempli gratia: Objectum instantia per novum keyword in ratione creata, possidet proprietates et modos obiecti.
Ordinate: Omnia genera vestit, inter basic genus vestit et obiectum vestit.
4. Cur generationem permanentem (PermGen) cum metaspace (MetaSpace) substituimus?
Responsio: Reponere generationem permanentem cum metaspace maxime est solvere problemata quaedam et limitationes permanentis generationis inhaerentes ac perficiendum et flexibilitatem JVM emendare.
Flexibilitatem et efficientiam administrationis memoriae amplio: Magnitudo memoriae permanentis generationis est quando JVM incepit et non potest dynamice accommodari. Metaspace utitur memoria locali loco Iavae cumulo memoriam et magnitudo eius dynamice ut opus adaptetur.
Solve problema de classium exoneratione et purgamentorum collectione: GC mores permanentis generationis complexus est et inaestimabilis, et efficientia redivivus humilis est.
Meliorem observantiam ac stabilitatem praebent: metaspace utens administrationem memoriam facit JVM magis unitam et constantem, quia metaspace, sicut aliae memoriae areas, administratur per memoriam localem. Haec scientiarum administratione simplificat memoriam et altiorem observantiam et stabilitatem meliorat.
Simplificare memoriam administrationis JVM
5. Intellegis fundamenta acervi spatii? Quibus circumstantiis, obicietur vetus generatio?
Respondetur: Fundamentalis structura congeries spatii maxime componitur novae generationis, veteris generationis et permanentis. Post JDK8, generatio permanentis metaspace substituitur et memoriam localem adhibet pro repositione.
Generatio cenozoica: Progressus novae generationis in area Eden subdividitur et duae areas superstes (0 superstes et 1 superstes)
Area Eden: Res nuper creatae memoriam in area Eden primum collocant.
Superstes area (S0, S1): usus est ad thesauros rerum quae superfuerant novae generationis purgamentum collectionis. Post singulas Minores GC res superstites inter has duas areas cisternatim describentur.
Vetus generatio: Objecta quae post multiplices Minores adhuc vivunt, GCs. Purgamentum collectio (Major GC vel Full GC) minus frequenter in generatione antiqua perficitur.
Generatio permanens / metaspace: metadata classium, inclusa definitionum classium, constantium, variabilium stabilium, modo in tempore confecto codice, etc.
Situm vero obiectum est in generatione antiqua;
Limen aetatis attingitur: Unumquodque obiectum habet saeculum cum memoria in novam generationem partita est, et aetas 1 post singulas Minores GC augebitur. Cum aetas certum limen attingit (default is 15), res promovebitur ad veterem generationem.
Magnum obiectum: Si objectum nimis amplum est, et limen a JVM positum excedit, objectum directe collocabit spatium in generatione antiqua.
Insufficiens spatium in area superstes: Si area superstes non sufficit spatium ad omnia superstitum obiecta in Minor GC accommodanda, haec erunt
Dynamic objectum aetatis determinatio: Si magnitudo objectorum omnium ejusdem aetatis in spatio superstes dimidium spatii superstes excedit, objecta, quorum aetas major est quam vel aequalis huic aetati, potest immediate intrare generationem illam veterem.
// 动态年龄计算代码
uint ageTable::compute_tenuring_threshold(size_t survivor_capacity){//survivor_capacity是survivor空间的大小size_t desired_survivor_size =(size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);//TargetSurvivorRatio 为50size_t total =0;
uint age =1;while(age < table_size){
total += sizes[age];//sizes数组是每个年龄段对象大小if(total > desired_survivor_size)break;
age++;}
uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;...}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
6. In quo memoria area magnae res positae sunt?
Responsio: Res magnae (vestes et chordae maximae) solent immediate in veteri generatione memoriae area collocari.Hoc est, ne nova generatio impediat frequentesPurgamentum collectioHoc tempore, magna obiecta saepe inter Eden area et Supervivorem aream exscripta sunt, ita purgamentum collectionis efficientiam meliorem. Configurare limen in magnis objectis, ut veterem aevum directe ingrediantur;
Classis si non onerata, connexa et initialilata non fuerit, JVM classis prima onerabit. Hoc includit vestigia sequentes:
Loading: Lege lima classis per onerans et bytecode classium in memoriam oneratis.
Connexio: tres gradus includit: verificationem, praeparationem et parsingem. Cognoscere rectitudinem imaginum classium, static variabiles classium praeparare et memoriam collocare, ac symbolum indiciorum in directas notiones resolvere.
Initialization: Exigite static initialization scandalum classium et initializationem variabilium staticarum.
memoria destinatio
JVm res novas in memoriam digerit acervo. Magnitudo memoriae partita est per structuram obiecti, incluso obiecti capite et instantia data.
JVM quod duas principales vias memoriae collocandi habet;
Gibba-the-montorem: Si acervus memoriae regularis est, monstrator destinatio solum certum spatium ad liberae memoriae spatium movere debet.
Free List: Si acervus memoriae irregularis est, JVM liberum album servare debet et opportunum impedimentum e indice libero inveniat cum memoriam collocant.
initialize ut nullus pretii
JVM initializet omnes instantiae variabiles obiecti ad valores defaltos. Exempli gratia, genus variabilium numerorum initialized ad 0, genus Boolean variabiles ad falsas, et species variabiles ad nullum referendum erit.
Set object header
Pone objectum capitis informationes in spatio rei memoriae, quae includit objecti Nullam codicem, GC generationem aetatem, cincinnum status vexillum, crinem filo tentum, id filum obliquatum, etc.
Constructor initialization
Constructor obiecti vocamus ad perficiendum initialization obiecti. Hoc includit operationes initializationes explicitas perficiendas in variabilibus instantias necnon codicem in corpore constructoris. Imprimis gradus sunt haec:
Facere instantiam initialization obstructionum classium.
Exequi modum constructoris parentis ordinis a summo ad imum secundum hierarchiam hereditatis.
Instantiae variabiles initialize ad valores explicitos determinatos.
Exigite principalem partem methodi constructoris classium.