Press "Enter" to skip to content

GOTO 2012 • Making The JVM Fly Experiences With Enterprise JVM PerformanceTuning • John Davies


grazie ho pensato che se fossi intelligente,
potrebbe rendere questa introduzione duratura
circa 50 minuti non avrebbero bisogno di
scrivere le mie diapositive che terrò a questo
il minimo sì, come è stato introdotto, ho un
licenza di pilotaggio L’ho preso quando avevo 23 anni
e tendo a usarlo ancora mentre volo
in tutto il mondo io vado per affari e se
Ho un weekend, prendo un aereo e
prova ad usarlo questa è la Nuova Zelanda
atterrando sulla spiaggia questo è quello che è
chiamata isola bianca è solo un vulcano
al largo della costa nord dell’Isola del Nord
è a circa 50 miglia al largo della costa nord
abbastanza spettacolare fumando ancora come te
puoi vedere che sta sorvolando Sydney
molte città superbe ti mostrerò
un altro in un secondo ma è incredibile
essere in grado di vedere belle città come
questo dall’aria e essere in grado di sorta di
volare intorno a loro e vederli in qualsiasi modo
che vuoi vederli per quelli
familiare con Ayers Rock è giusto
accanto quando dico proprio alla porta accanto
si tratta di circa 40 40 miglia di distanza
Proprio a 600 miglia da Alice Springs
è nel mezzo del deserto australiano
chiamato l’olgas assolutamente sbalorditivo
dei miei tempi passati preferiti quando non sono
volare è al pub che sta combinando
sia questo è un piccolo posto chiamato
William Creek, che è una popolazione di
due è a circa 700 miglia dal
città più vicina che ha una popolazione di
una decina di persone sono praticamente sulla strada
fermati al pub e bevi e questo
era capodanno ce n’era un sacco
altre persone che sono volate in pochi
persone che hanno guidato per letteralmente un giorno
più la fattoria più vicina a questo è
un terzo delle dimensioni del Texas, quindi quando
Gli americani dicono che le cose sono grandi lo dice
in prospettiva comunque tipo di terreno e
prendere la strada che è stato divertente se
qualcuno conosce Ross Mason, sono io
portandolo a San Francisco Ross
Mason è il fondatore della salsa di mulo così
questo è stato l’anno scorso fondamentalmente un lavoro di terrore
intorno a San Francisco e l’ultima diapositiva
per dire che prendi qualcosa di carino
viste spettacolari sono sempre tentato
quando vedo grandi ponti come questo
in grado di volare sotto di loro ma è molto
modo rapido di
una licenza ma in ogni caso solo quello era un
introduzione rapida che cosa devo andare
attraverso oggi ti danno un po ‘di
sfondi che ho impostato su quando ho scritto
questi originariamente si siedono per scriverli
diapositive ho pensato che possiamo entrare in alcuni
davvero ottimo il dettaglio del jvm
e alcune delle impostazioni e cose e
chiunque abbia provato la messa a punto lo saprà
quella singola impostazione e la JVM
e ci sono letteralmente dozzine e
decine di loro e ovviamente il
combinazioni ci sono migliaia di decine
migliaia di combinazioni ognuno è
preciso per la tua unica applicazione su uno
particolare architettura in esecuzione uno
particolare gruppo di lavoro in un particolare
scenario quindi qualsiasi cosa ti dico sta andando
essere abbastanza inutile quando vai a casa così
Ho pensato di tornare ad alcuni dei
Nozioni di base e la scorsa settimana sono stato speso come me
di solito ogni qualche settimana
noi visitando i clienti e uno di quelli
i clienti avevano un problema di prestazioni e
ti aspetti di andare oltre e sederti lì con
la tua testa in profondità e la JVM
debugging etc e c’erano due parti
che ho scoperto molto molto dopo un giorno
o forse nel secondo giorno in cui noi
fondamentalmente apprendendo l’architettura di
cosa stavano facendo con il nostro prodotto
che all’improvviso mi è venuto in mente se lo sono
andando a fare un discorso sulla performance
tuning dovremmo davvero tornare indietro
alcune delle basi su questo e il
la ragione è che stiamo ottenendo dieci
i tempi aumentano di poco le prestazioni
guardando alcune delle architetture e
alcune delle cose della città che sono state
fatto e sono sicuro che molti di voi sanno
questi ma è spero non tutti
sa tutte queste cose altrimenti
non imparerai molto ma
Spero di riuscire a perforarne alcuni
questi in I hanno trascorso molto tempo da allora
l’inizio di Java e un buon decennio
prima di quello in C quindi c’è molto
esperienza qui in termini di cose
che sono importanti per la messa a punto e lo farò
andare nella JVM e io passerò attraverso
alcune allocazioni di memoria e come
quelli lavorano verso la fine ma io voglio
passare un po ‘di tempo a tornare
basi di Ochem vi danno un’idea del
problemi il mio tipico cliente
siamo seduti là stanno provando a
processo di solito il commercio di pagamento dei dati
dati per coloro che conoscono il
le tecnologie riparano dagli scambi
fpm l iso 20022 sepa che è un singolo
Area pagamenti europea Swift è pagamenti
ecc. e stanno diventando molto grandi
quantità di messaggi se si Ecco
dati di ticker che sono dati di prezzo da
dagli scambi che stiamo guardando
centinaia di migliaia al secondo
Il CME ha colpito 100 350.000 al secondo di recente
di solito non dura molto a lungo
ma stiamo osservando le decine di
migliaia in centinaia di migliaia
e se stiamo guardando il commercio
conferme siamo giù nel genere
di poche migliaia al secondo ecc
tu un’idea della fonte di cose che siamo
cercando di elaborare la latenza più bassa
i commercianti ecc lo faranno in C e C ++
ma naturalmente siamo qui e siamo qui
guardando Java e questo è quello che vorrei
piace andare attraverso alcuni dei
aspetti di prestazioni e problemi ora
prima di toccare le prestazioni è
non solo per far andare le cose più velocemente
latenza importante quanto una delle aree
dove parlo ho fatto un certo numero di anni fa
siamo appena prima che qualcuno citasse
la borsa di New York quella
millisecondo valeva circa 100 milioni
dollari sono sicuro che puoi fare il
calcoli ma quello è approssimativamente cosa
vale la pena in termini di latenza questo è
perché mettono effettivamente le macchine
fisicamente nell’ambiente che
stanno lavorando perché la velocità di
il tempo di luce di un millisecondo è di circa 300
chilometri e amazon ho trovato un
sezione interessante qui loro pensano
che circa 1 o 100 millisecondi di
ritardo su un sito di e-commerce vale la pena
circa l’ uno percento del loro e-commerce
affari così ancora una volta conosci la dimensione di
Amazon che lo mette in prospettiva
quanto sia importante questo e poi
infine per quelli di voi che non lavorano
in un grande ambiente bancario o di grandi dimensioni
compagnia non è il costo del
software così tanto non è il costo di
le macchine che tutti sanno che puoi andare
fuori e comprare
server per un prezzo ragionevole e di
Certo, se sei in una compagnia, lo faranno
caricarti di più è il costo della corsa
questi in produzione se guardi al
ciclo di vita medio di un’applicazione voi
progettalo sviluppalo e poi
resta in produzione, per cui si spera
tre quattro cinque sei anni e molti
le aziende caricheranno e io userò
dollari perché è il numero che io
è stato quotato solo circa ventimila
dollari all’anno per macchina da ospitare
questi che è il costo del del
ambiente l’ aria condizionata il
le persone a eseguire queste cose così che è il
costo di una macchina fisica, quindi se tu
può ridurre che questo è una specie di cosa
che avremo intenzione di mirare
per questo quindi non ho intenzione di darti
qualsiasi proiettile d’argento non c’è java
parametro macchina che posso fondamentalmente
ti cito che renderà tutti i tuoi
le applicazioni vengono eseguite due volte più velocemente, mi dispiace
a tale proposito, ma spero che vi darò
abbastanza informazioni che puoi iniziare
aggiustando un po ‘di questo per quelli
non ho giocato con le JVM o per
anche quelli che hanno, ma si spera, danno
alcune idee per tornare indietro e guardare
a quello che hai fatto, quindi, a cosa sto andando
prova a darti di questo è un po ‘
idee e informazioni sufficienti per tornare indietro
e faccio un po ‘di tweaking che voglio
per tornare indietro di circa 20 anni
Insegnare bene non proprio 20 anni 15 anni
fa è quello di insegnare per Learning Tree Java
e avevamo questa sezione come
qualcuno lo riconosce molto bene
frattale è stato chiamato un frattale di Mandelbrot
e alcuni di voi tornano in giro
Diciannove anni erano tutti 80 e 80
aveva magliette era la cosa più grande
è venuto fuori così è molto colorato noi
usato per dimostrare come parte di Java
Certo in pratica se si voleva fare
Java corre più velocemente dovevi usare J & I the
Interfaccia nativa Java e lì hai avuto
per chiamare vedi perché vedi fondamentalmente corse
roba più veloce e torni in Java
dopo quindi questo è uno dei
esercizi abbiamo fatto efficacemente cosa
succede per ogni singolo pixel sul
schermo in quella particolare lì
che è probabilmente circa 600 x 400
risoluzione di ognuno di questi rappresenta
un numero reale e immaginario IE un complesso
numero e fondamentalmente per ottenere il colore
fai un numero di iterazioni e il
quantità di iterazioni che precedono
raggiungi un certo punto detta il
colore che stai per ottenere il
la formula è meravigliosamente semplice come a
loro sono un po ‘di codice Java
efficacemente scegli un punto
il punto è determinato dal pixel
efficacemente immaginario sulla verticale
asse e reale sull’asse orizzontale e
si itera un numero di volte in iterazione
in genere un migliaio di volte è nero
ecc ecc alcuni anni dopo a circa 2.000
divenne evidente che non era così
correre molto più veloce ed è diventato un bene
dimostrazione del perché non usare J & I perché
eviterai J & I perché a quest’ora
java aveva iniziato a recuperare il ritardo e penso
questo era il punto di svolta in cui java
è diventato un linguaggio di novità da animare
i tuoi doni che riguardavano il ricordo del
internet stava uscendo così tardi
Anni ’90 abbiamo avuto immagini gif che stavi iniziando
per ottenere immagini all’interno di Internet
perché prima era la posta elettronica prima
quello è e l’utente net e porn
ovviamente e potresti iniziare ad animare
le cose e questo improvvisamente ha iniziato a
diventare utile nel lato server oggi
possiamo probabilmente rendere la stessa cosa
Ho visto alcuni pezzi piuttosto impressionanti
puoi metterlo anche sui nostri iPad o
iPhone lo rende in sub-secondi su lontano
risoluzioni superiori una specie di cosa ora
che puoi renderizzare in 3d su un 1080p
schermo è comunque richiede molto
di calcoli il numero non viene
giù ma come le persone devono
capire questo frattale che hanno avuto
ottimizzarlo e ciò che è più importante è
che le ottimizzazioni su questo hanno
quasi superato la prestazione effettiva
miglioramenti di alcune macchine così
la combinazione dei due è risultata
in un sacco di prestazioni su un giorno per giorno
lavoro però stiamo facendo un sacco di dati
elaborazione ed è l’elaborazione dei dati
che voglio cucinare oggi così ancora
proprio come un promemoria a cui voglio tornare
alcune delle forme precedenti di
codice sono sicuro che alcuni di voi ricordano
Pascal qualcuno ha imparato Pascal quando è lì
erano bambini come la maggior parte di esso o anche di recente
in realtà come probabilmente sapete
la stringa pascal ha la lunghezza del
stringa all’inizio è a
un po ‘di restrizione significa
che non puoi avere stringhe in particolare
lungo ma sai che è riuscito a Twitter
fare affari fuori di esso e in modo equo
semplice ha funzionato e concatenazione ecc
è stato relativamente facile se si voleva ottenere
la lunghezza della stringa di questo semplicemente
guarda davvero il primo byte
guardando veramente veloce vediamo che abbiamo il
stessa memoria ma effettivamente abbiamo a
null alla fine così un personaggio nel 0
finisci ora se vuoi ottenere la stringa
posa di questo ovviamente devi
ora scorrere l’intera stringa
fino a quando non trovi lo zero alla fine
è indeterminato finché non hai raggiunto
Alla fine un sacco di diversi vantaggi e
cose e entrambi di questi Pascal e C
sono molto molto semplici quando sei
elaborandoli ce ne sono alcuni
le restrizioni che ricordavano erano queste
byte non caratteri o caratteri come te
entrare in Java come Java, che cos’è sette o
otto ora hanno cambiato, non sono nemmeno due
byte per ora in cui sono andati
tre o quattro, ma in pratica significava questo
che non potremmo effettivamente usare l’a con
il piccolo sono sicuro che hai un nome per
in Danimarca ha avuto l’ inizio del nostro
un nome oh grazie a tutti noi
non potrei usarlo nei giorni precedenti
perché semplicemente non esistevano
quelli in quei personaggi ti fanno
in realtà ha dovuto predeterminare il
set di caratteri prima di entrare, quindi quando
stiamo lavorando con vederlo reso
relativamente facile ma anche perché lo eravamo
lavorando a un livello molto basso siamo solo
fuori dal codice della macchina, quindi siamo fuori
l’assemblatore ha raggiunto quello che volevamo
in realtà passare fare qualcosa molto veloce o
fare qualcosa che stavamo facendo molto
o iterando potremmo manipolare il
memoria e esattamente come volevamo
fallo così se volessimo chiamare in a
funzione e la funzione e io uso il
funzione di parola in opposizione al metodo
perché i metodi escono dalle classi quindi se
lo chiamiamo in una funzione che possiamo
effettivamente modificare la stringa nel file
funzione senza doverlo restituire
in seguito e quindi copiare a ciascuno
tempo e creare nuove versioni quindi se noi
volevo manipolare il messaggio noi
potrebbe passarlo in una funzione
la funzione potrebbe manipolarlo
era relativamente semplice e anche questo
significava che quando abbiamo passato la stringa
abbiamo solo bisogno di passare un puntatore ad esso
e poi ovviamente potresti mettere un Const
il che significava che non ti era permesso
in realtà cambiare il contenuto di esso e
è stato un po ‘come quello che abbiamo oggi
e così come andiamo avanti nel
lingue orientate agli oggetti che iniziamo
efficacemente mettere più funzionalità in
queste stringhe Siamo venuti via dal la
array di byte o il char array come sappiamo
e abbiamo iniziato a creare un oggetto
intorno a questi e abbiamo iniziato ad astrarre
noi stessi perché siamo in un
ambiente in cui vogliamo astrarre
cose e ci allontaniamo
dalla macchina sottostante che in
alcuni modi sono buoni ma in altri modi è
non proprio così buono quando si tratta di
prestazione se per esempio lo volessimo
passare una stringa molto grande o una grande
pezzo di memoria non abbiamo bisogno di farlo
abbiamo solo bisogno di passare in modo efficace a
puntatore allo stesso posto e quello era
non è stato necessario non copiarlo
se volessimo copiarlo perché lo sapevamo
era memoria e sapevamo che lo era
contiguo potremmo usare una copia mem o
qualcosa che potremmo effettivamente copiare
un modo molto più efficiente e poi alcuni
cose interessanti accaddero mentre ci muovevamo
in C ++ e obiettivo-c prima del
le librerie standard sono venute in giro
classi di raccolta che avevamo set di mappe
elenca gli elenchi collegati ecc. e diversi
derivazioni di quelle cose era abbastanza
interessante perché c’erano un sacco di
diverse versioni in giro e loro
non erano standardizzati e uno dei
problemi interessanti sono stati se hai creato
una stringa e la metti in a
collezione che possiede il ricordo di ciò
stringa quindi se la stringa va nel
raccolta e quindi si elimina il
stringa o tu sostanzialmente lo permetti
non avevi un netturbino ma
l’hai liberato per permettere che la memoria fosse
usato altrove era una buona programmazione
Praticare il problema era che il
la collezione aveva una copia dello stesso bit di
memoria quindi se sei venuta ad usare quello che avrebbe fatto
ottenere un sacco di corruzione quindi abbiamo questi
che finestre avevano il generale
Difetti di protezione ecc. quindi questa scelta
un problema e potresti immaginare di metterlo
qualcosa in una collezione in un set
e poi qualcosa lo cancellerebbe
di quello quindi se fosse il putter
o il getter che lo ha cancellato o addirittura
la lista stessa che l’ha gestita in a
modo diverso ha preso una copia e cancellato
abbiamo avuto alcune cose piuttosto strane
succede così abbiamo iniziato a creare questi
oggetti che sono diventati immutabili da fare
la vita più facile e poi, naturalmente
È venuta la gestione della memoria così quando il
la gestione della memoria è arrivata in generale
ha fatto un lavoro migliore del vicino
programmatore medio per fortuna questo era
l’era in cui le basi visive e le cose
è arrivato e la gente pensava che fossero
programmatori e andrebbe effettivamente fuori
trova lavoro e qualcuno dice okay
le basi visive davvero buone ora vogliono
ti metto a vedere e ne ricaviamo moltissimo
di problemi quindi la gestione della memoria è buona
per l’estremità inferiore della programmazione
gerarchia dovremmo dire ma per quelli
che erano abituati a essere in grado di gestire il
memoria ha creato alcuni problemi se andiamo
in stringhe in Java oggi e io riesco anche a
il punto in un secondo se andiamo a
il messaggio di stringhe si stacca dal tuo JMS così
leggi un file e leggi questi in
stringhe e ora è necessario elaborare questo
così molto semplice qui ho il
alfabeto e dobbiamo scegliere piccoli pezzi
fuori da questo alfabeto ora se passiamo il
stringa intorno va bene, ma se vogliamo
prendere piccoli pezzi da questa corda
per esempio facciamo sottostringa alfabetica o
anche se passiamo l’alfabeto e poi
dopo non facciamo una sottostringa
dimentica che stiamo ricevendo decine di migliaia
di messaggi al secondo e potremmo essere
in esecuzione multi-thread e tutti questi
inizia a creare oggetti Java ed è
questi oggetti java temporanei con il
stringhe che iniziano a causare i problemi
nella JVM ora puoi arrivare a questo
atteggiamento in cui si potrebbe dire oh JVM
si prenderà cura di tutto ciò che è
bene sai che sono abituato a questo che puoi
in pratica scrivi il tuo codice, la JVM arriva
lungo raccoglie fa tutta la spazzatura
collezione ed è abbastanza buono in questo
e penso che quello che è successo siano le persone
avere persone pigre che non hanno usato
o ha avuto l’esperienza di come solo come
le macchine sono veloci che dobbiamo
un ritorno a quel Mandelbrot ci ha messo
stavano elaborando quello che dicono in a in
uno schermo VGA 768 era settecento
migliaia di operazioni a virgola mobile a
secondo adesso a quei tempi le tue macchine
correrebbe a circa cinque megahertz 10
megahertz per uno più veloce e poi tu
aveva un’unità a virgola mobile dietro quella
ora significava che stavi ottenendo
forse 10 milioni di virgola mobile di 10
milioni di istruzioni al secondo con
le istruzioni in virgola mobile che eri
guardando circa un milione al secondo così
se si voleva fare uno schermo 1080p e
corri mille volte che stavi guardando
a una ventina di minuti per elaborare questo
Ovviamente 1080 non era intorno a loro persone
Ho dimenticato quanto velocemente queste macchine
sono che abbiamo oggi la tua media
il portatile è per indicare qualcosa di gigahertz
a volte tre gigahertz hai a
unità a virgola mobile integrata nel
processore co-hosted del processore che
in genere non si verifica su a
miliardi di operazioni a virgola mobile per
secondo, quando vado da questi clienti
a volte sono seduti lì a dire
è davvero bello che ne riceviamo 200
transazioni un secondo fuori di esso il mio cervello
pensa che penda su 1 miliardo di virgola mobile
operazioni un secondo che stai ricevendo 200
fuori da ciò che la terra sta facendo per il
il resto del tempo è, è solo
non è possibile andare così piano chi qui
posso ricordare oh diciamo all’inizio degli anni ’80 no
una prova di quanti anni hai ma intendo noi
avevamo la massima velocità della macchina per
sei megahertz o qualcosa che eravamo abituati
ottenere i giochi in realtà piuttosto fresco fuori
quelle cose che dovevi sedere e scrivere per
giorni e giorni fuori da una rivista da digitare
in tutte le cose che hai usato per ottenere
roba incredibile da quello e ha ottenuto
persone sempre più veloci e veloci
ho dimenticato che quindi lascia che ti dia un
esempio se ho un file da un gigabyte
è abbastanza grande è che andrà bene quasi
Le unità USB in questi giorni se avessi chiesto il
stessa domanda di cinque anni fa
Pensavo wow prendere una parte del mio disco rigido
ora vuoi farlo ha un
milioni di righe in là ogni riga è
circa 1k di dimensione 1k è circa quattro
i tweet vanno bene solo in prospettiva
così capisci cosa è così che hai
ho un milione di queste cose ora dentro
così abbiamo quattro milioni di tweet se
ti piace abbiamo bisogno di trovare un particolare
pezzo di informazione e controlliamo questo
in due e due a jvm se ci piace o noi
può usare qualsiasi altra lingua per quanto tempo
pensi ci vorrà per scoprire che
pezzo di informazione su quattro milioni
tweets meno di un minuto in mostra
le mani soddisfano più di un minuto Oh
qualcuno sta graffiando che è giusto
non meno di 10 secondi in meno di
un secondo è dovrebbe essere inferiore a a
secondo a passare attraverso quanti tipi di io
ti ha dato la resa divertente
la cosa è se lo si esegue in realtà in Java
tipicamente su una macchina media
dura più di un secondo
anche se stai correndo, ma se tu
eseguirlo come un comando UNIX standard come a
avvolgere o qualcosa che in genere si può ottenere
meno di un secondo e prestazioni fuori
di questo e la gente li sta ingegnerizzando
sistemi complessi incredibilmente grandi che
stanno prendendo letteralmente 30 secondi per fare
questo tipo di persone di ricerca computazionale
stanno dimenticando il tipo di esibizione
che abbiamo così è quando mi alzo
a un cliente guardo queste cose e
pensa no no no, questo è un tuo ordine
grandezza forse due ordini di grandezza
per quanto veloce dovrebbe andare così
questo è il motivo per cui mi siedo spesso e guardo
l’architettura ora non lo è
necessariamente la soluzione che ho avuto una chat
con il mio collega fuori e potremmo
prendere qualcosa di relativamente semplice come
questo e sono sicuro tra il sai
tutti qui potremmo venire con
probabilmente due dozzine di soluzioni diverse
su come ottimizzare questo è è
pensato per essere un esempio, quindi se prendiamo il
uno qui dove stiamo cercando di prenderne un po ‘
informazioni al di fuori ora che cosa sono
provare a fare è fondamentalmente prendere un grande
messaggio complesso ed estrai tutto il
informazioni da quel messaggio e mettere
in un oggetto Java
che ha un intero gruppo di privati
campi dove ho getter e
è ciò che cerco di fare
popolare il più velocemente possibile e
renderlo disponibile per qualcuno che ora
vuole ordinare o inserire questi oggetti
collezioni e fondamentalmente trattarle come
Java in modo così efficace sto mettendo in pausa il
stringa mettendolo in Java ora se io
chiama la sottostringa alfabetica che creo a
la nuova stringa sarà molto piccola
stringa è una stringa con un morso in esso
e poi lo passo alla funzione di
il problema è che è una stringa il
l’overhead di una stringa è di gran lunga superiore
l’unico morso che sto creando ora
potrei prendere Potrei passare la stringa
stesso se passo la stringa stessa è
passato per riferimento se modifico il file
stringa è immutabile, quindi crea ancora
un’altra stringa se voglio solo prendere
l’informazione al di fuori di esso
il modo più veloce per farlo su questo
tra l’altro è quello di passare in modo efficace il
stringa e dentro il mio metodo è di usare a
grafico dot stringa ottenere l’indice del
char e quindi efficacemente se posso lanciare
a un morso se voglio conservare un morso
o un personaggio che non interessa per quanto tempo
pensi che ci vorrebbe per correre un miliardo
di questi seduti in questo piccolo ciclo
qui un miliardo che è un migliaio di milioni
per quelli che non sono in contatto con
miliardi di americani
miliardi diversi dall’inglese quindi
qualificherà questo mille milioni
volte solo su questa una cosa più grande
di 10 secondi sono tutti seduti
lì con calcolatrici ora più di a
secondo mentre prende il mio portatile
zero sei secondi è piuttosto impressionante 1
Migliaia di volte per correre su questo ora se lo sono
estraendo tutte queste informazioni da
qui voglio arrivare molto di più
performance quindi è il genere di cosa
che sto entrando nella ragione che volevo
portare questo è perché questo era un
problema tipico che avevamo passato
messaggi fissi e pazza originali
era in realtà altro il codice era
generato e il parser era relativamente
ingenuo ed era solito dire praticamente cosa
sto cercando qui usando la riflessione
quello andrà attraverso e cercherebbe
il
movimento che ha ottenuto e poi efficacemente
fai un set e in pratica verrebbe eseguito
attraverso e stringhe positive non abbiamo mai
mi sono reso conto che si trattava di un problema
perché stavamo facendo felicemente a
poche migliaia di secondi è diventato evidente
quando un cliente aveva bisogno di più di pochi
mille secondi e all’improvviso noi
ho iniziato a guardare il parser che abbiamo ottenuto
quel parser da poche migliaia al secondo
fino a 138.000 al secondo solo fino a
ottimizzando questo tipo di cose ora
questo non è il genere di cose che tu
può uscire dalla sintonizzazione JVM così è
qualcosa che voglio mettere
avanti quando stai guardando il
architettura del tuo sistema a
provare in modo efficace e guardare alcuni di
queste cose più piccole è molto facile
prendi una piccola parte, se puoi
creare alcuni test unitari o altro
quadro di prova che ti piace prendere alcuni dei
le aree che stai guardando il profilo
quello che hai e io andrò attraverso alcuni
strumenti alla fine che possiamo guardare e
quindi inizia a ottimizzare come puoi ordinare
di voi potreste scoprire che è una specie di
inerente alla tua architettura
e l’uso di questo così potrebbe richiedere
un bel po ‘di lavoro extra quindi una domanda
non funzionerebbe, scusa, non funzionerebbe
con le lettere danesi sì e morsi
il tuo diritto se lo stavi facendo
staresti bene, penso di averlo fatto
questo fuori ma è sì, se lo stai facendo
addebitarti se tu se stai facendo morsi
ovviamente stai per tagliare
fuori tutto ciò che non sta chiedendo ma
sfortunatamente gli americani sono arrivati ​​lì
prima che lo facessimo o prima che voi ragazzi lo aveste fatto
il danese aveva inventato l’alfabeto per
i computer sarebbero stati diversi ma
non avremmo otto bit in un byte
avremmo dieci bit in un byte o
qualcosa di altro morso e morsi essere
interessante qui è un altro interessante
uno a un cliente è un’altra cosa
questo mi ha fatto pensare a questo
così seduto in un sito client questo è
questo è uno di questi è uno dei
cose che mi hanno fatto pensare perché dovrebbe
entriamo direttamente nella JVM, quindi guardiamo
al sistema client è che ha
da qualche parte per andare ancora ne ha un altro
altre settimane non sono davvero
nella messa a punto
o così sono fondamentalmente solo
finirlo è un po ‘corto
un bel decimo della velocità di cui ha bisogno
per esaurire, ma è in qualche modo breve e
lo stanno ridimensionando e lo sono
fondamentalmente è un distribuito
architettura e questa cosa sta funzionando
e sono andato un bel numero qualsiasi perché se
questi ragazzi guardano questi aftersour del video
capiranno che sto parlando di loro
ma diciamo che sta funzionando un certo
velocità effettiva al secondo, quindi la guardiamo
e solo per dare un’occhiata veloce sai
quanta memoria come ne sai
a cosa sta lavorando , quindi ha un?
quattro gig di ram che pensano piuttosto bene alla mappa
non molto non funziona in quattro concerti di
ram che è molto il jx MX era di quattro concerti
JX ms passerà attraverso questi in un secondo
è stato due concerti senza problemi no
altri parametri in esecuzione meno server
guarda bene quindi ho fatto un po ‘di PS meno EF
che fondamentalmente mi dà tutto il
parametri per tutto ciò che è in esecuzione su
macchina solo per vedere che tipo di utente
e il throughput del sistema sta prendendo piede
la CPU ha due cpu lì dentro
stanno entrambi correndo relativamente velocemente
funziona su linux e ne trovo un altro
java virtual machine running in there
e interessante è il running tomcat
e questo sta facendo due concerti così abbiamo
quattro concerti o 12 concerti dall’altro
Ovviamente il sistema operativo in tutto il
i bit che la macchina era in realtà solo
aveva quattro gig di ram in esso era un
la macchina virtuale ha combinato così i due
macchine virtuali a jvms più il
sistema operativo abbiamo avuto sei gig di ram
cercando di correre all’interno di una macchina da quattro gig
ora linux ti permette di farlo e basta
semplicemente lo si scambia il problema è quando
lo scambia va su disco quindi tutto a
all’improvviso finiamo con questi che sono
normalmente in esecuzione abbastanza veloce
memoria ora in esecuzione su disco e, naturalmente
questo ha un impatto molto importante sul
performance qualcosa di incredibilmente semplice
ma perché i programmatori avevano scritto
la loro applicazione per eseguire un ambiente
di cui erano molto sicuri e loro
ha detto che è molto facile da dare
questa molta memoria e loro la trasmettono
le operazioni e le operazioni del corso dicono
ciò che il programmatore mi ha detto che ha bisogno
questo e quello è ecc. ma non avevano
in realtà pensato a come tutto
combina insieme facile errore e abbastanza
sciocco quando lo vedi ma certamente
fatto un’enorme differenza per la messa a punto così
efficacemente con se stai colpendo il
alte barriere di memoria che stavamo ricevendo o
guardando a circa due ordini di grandezza
fuori da quello e puoi sederti e
di debug che per sempre ed è che non sei
andando a trovare qualcosa è efficace
il sistema generale che stabilisce come
questo esegue un altro esempio di oltre
ingegneria ho pensato che fosse abbastanza
divertente e ha avuto una lunga chiacchierata con
i ragazzi su questo ora stanno provando
per salvare diciamo ventimila
messaggi un secondo ora l’architettura
stai leggendo i messaggi da una coda tu
salvarli in modo sicuro su cui li si passa
un’altra coda quindi è gradita
l’architettura è distribuita per mettere le cose
in segnali in modo da poterli distribuire
bene e hanno un negozio sicuro così
ventimila messaggi di secondi sopra
otto ore di trading sto leggendo il
i numeri dello schermo qui stiamo cercando
a circa 20 meg al secondo o settanta
due gigabyte quindi hanno deciso di usare un
database in memoria ce ne sono molti
non nominerò quello in questo particolare
caso ma purtroppo come hanno ottenuto
verso il tipo di pre-produzione
prove non c’erano problemi con loro
l’architettura non ha avuto problemi
gli strumenti che stavano usando a parte il
fatto che non ne avevano abbastanza
conoscenza di come gestirli ma loro
poi ha dovuto convincere molte persone a provarci
e sintonizzare questo per farlo funzionare e cosa
stavano cercando di fare è quello di ottenere questo
database in memoria che funziona attraverso e
sharding e facendo tutto ciò
dovrebbe fare per essere in grado di eseguire questo tipo
di prestazioni e non è particolarmente
prestazione veloce ma non funzionava
e stava creando molti problemi e
anche quando gestivano le cose
parecchie volte li hanno riprovati
per poi
di nuovo al database che dovevano
cancellarlo se hanno fermato tutto
hanno perso il resto dei giorni lavorando
cetera quindi ha ottenuto sempre di più
complicata la mia domanda era perché no
usi il disco ventimila messaggi a
secondo, puoi scrivergli il difficile
disco quali sono i vecchi che conosci quelli
rotonde cose rotonde con andare arrugginito quando
li lasci troppo a lungo siamo un SSD a
molte persone sono su SSD in questi giorni da
SSD è possibile scrivere 2 gigabyte all’ora
o così un gigabyte ogni due secondi così
non c’è assolutamente nessun problema
scrivendo tutte queste cose su disco così per a
negozio sicuro abbiamo clienti che sono
seduto prendendo questi messaggi via un
media di centomila al secondo
e stanno scrivendo questi due dischi così
il mio punto è qui la semplicità, se vuoi
per far sì che le persone gestiscano il disco, se vuoi
per replicare il disco è molto
più facile che cercare di convincere la gente
sono qualificati in questo database in memoria
quella era davvero una specie di attività secondaria ma
era un’altra cosa che mi prendeva
pensando a perché le persone stanno cercando di farlo
oltre a ingegnerizzare queste soluzioni così voglio
guardare alla JVM quello che voglio
cercare di uscire da questo è solo darti
Posso immaginare che ci siano parecchie persone
in qui che conosco un bel po ‘di
la JVM, ma si spera che ci sia abbastanza
molti di voi che sono stati trattati in modo equo
scatola nera e questo dovrebbe, si spera, dare
un po ‘di informazioni su
come puoi ci sono alcuni parametri
con cui puoi armeggiare e giocare
quello farà abbastanza differenza nel
le prestazioni delle vostre macchine quindi prima di
tutto è diviso in due sezioni principali
abbiamo quello che si chiama perm gen
generazione permanente questo è dove il
le classi sono caricate così se lo fai
mappatura relazionale di oggetti che stai scherzando
con XML stai facendo Jack’s Be
o qualcosa del genere che sta generando
enormi quantità di classi a volte un IDE
questo sta caricando tutto il tuo codice
sarai molto presto a corto di permgen
spazio e avrai una memoria insufficiente
permgen e il parametro molto semplice
per questo è solo per impostare fondamentalmente
le poesie in formato 250 Meg a
è dovrebbe vederti attraverso la maggior parte degli usi
non è qualcosa che sta per
cambia la velocità della tua macchina virtuale
è raccolta dei rifiuti ma non è così
andando a fare una grande quantità di
differenza mentre le cose si stanno caricando
là è abbastanza lento perché hanno caricato
dal disco comunque in genere anche se lo è
unità flash o qualcosa di più veloce SSD così
non sta andando a fare un enorme
differenza ma questo è uno di quelli
le cose che o va o non va
ora che la parte più interessante è
l’heap ora ci sono due parametri su
il mucchio e noto che c’è abbastanza
un sacco di argomenti o diversi in ordine
di come impostare questi questi sarebbero i
quelli a cui sei probabilmente più abituato
e interessantemente non è necessario
più è alto lo si imposta a quello più veloce
va non sempre funziona così
ci sono alcune cose che puoi fare quindi lascia
mi basta spiegare loro c’è la ms
che è la dimensione iniziale dell’heap
che tu prendi e io vado nel the
diversi tipi di heap in un secondo e
c’è il parametro x MX che è il
dimensione massima ora supponiamo che lo siano
sia lo stesso per ora, se lo è
molto piccola, la JVM si comporta diversamente
perché è la raccolta dei rifiuti
ovviamente più frequentemente perché tu
avvicinarsi alla filigrana su di esso
immondizia posto non necessariamente
significa che la tua roba è più lenta
tutto funziona solo in un modo diverso così
una delle cose che puoi provare con questo
è quello di ridurre il tuo heap fino all’inizio
per vedere una differenza abbastanza notevole tu
può anche monitorare questo su alcuni dei
strumenti come J visual vm j stat
quello che puoi monitorarlo con ma
queste sono cose da provare e questo è il
cosa che probabilmente farà un
ragionevole ammontare di differenza per il
il modo in cui viene eseguito il codice non basta darlo
quattro concerti o otto concerti o 16 concerti se
non si esegue in un vm a 64 bit
necessariamente farlo andare più veloce e il
la grande differenza è che lo farai davvero
nota se hai un sacco di ram in
lì e hai impostato la tua memoria
nel modo sbagliato tra la tua vecchia memoria
e nuova memoria in cui entrerò in a
secondo ti ritrovi con questi completi
collezioni di spazzatura ora se lo sei
raccolta dei rifiuti
16 gigabyte di RAM e qualcosa
corre veloce sta andando la vostra macchina è
andando a fermarsi a volte per diversi
secondi se si sta eseguendo la macchina
attraverso l’esecuzione di connessioni TCP IP o
ti aspetti che gli utenti facciano clic
cose che si fermeranno non accadrà nulla
sono sicuro che alcuni di voi hanno visto
questo quindi è uno dei problemi con
rendendolo troppo grande ora se rendi ms e
La differenza MX vedrai questo grafico
in alto a destra la punta arancione rosa è
il MX così Oh, è quello che è stato
effettivamente utilizzato ed efficacemente sta andando
fino in cima al picco ora se si imposta
sono entrambi uguali quello che succede è quello
la memoria viene assegnata immediatamente ora
potresti non averne bisogno ma se lo sei
probabilmente lo userò comunque tu
potrebbe anche darlo al tuo Java
VM comunque e lascia correre il vantaggio
di metterli entrambi uguali a te
risultati molto più coerenti perché tu
non so quando questo passo sta per
si verificano in quanto assegna più memoria da
il sistema operativo come puoi vedere
quei passi sul lato sinistro del
la punta rosa che sale è quella
sistema operativo consegnando più memoria a
così se volessi eseguire costantemente
la mia preferenza personale è di impostare entrambi
questi lo stesso e se si sta cercando di
fai un tuning delle prestazioni
risultato costante ogni volta, se lo sei
in esecuzione su una macchina casuale e un utente
modalità ovviamente non si vuole afferrare
tutta la memoria tutto il tempo molto rapidamente
quindi tendi a impostare ms inferiore a MX ma
se stai usando un server my
la preferenza sarebbe impostarli allo stesso modo
fuori dal mucchio lo dividiamo in due
più sezioni quindi abbiamo il nuovo
generazione e vecchia generazione, quindi cosa?
succede in questo e nella nuova generazione
è quindi suddiviso in altri tre
sezioni che si chiama Eden e poi il
sopravvissuto così efficacemente ciò che accade
abbiamo questi mini garbage collector se
ti piace così come il tuo temporaneo che dici
le stringhe sono allocate quello che è successo è
che saranno generati all’interno del
spazio eden avrai un mini spazzatura
la raccolta dei rifiuti arriverà
ed esso si sposterà quelli in
spazio sopravvissuto hai due di quelli
ed efficacemente alla fine una volta fatto
una raccolta di spazzatura di quelli qualsiasi
oggetti che sono sopravvissuti alla fine
metti quelli nella vecchia area ora se tu
a corto di tutto perché
hai un sacco di raccolte di rifiuti
andando alla fine quello che succede è che ottieni
una memoria insufficiente e sono sicuro che tutti
come se tu stia lavorando in Java
visto che la cosa interessante è che tu
può effettivamente impostare la differenza tra
il vecchio e il nuovo e questo è probabilmente
l’unico altro parametro JVM che a meno che
sai davvero cosa stai facendo
questo è armeggiare con la JVM
l’ unico altro parametro che dovresti
probabilmente sperimentare non c’è
c’è un valore predefinito per macchina /
JVM a seconda che tu stia correndo
client o server a seconda del
architettura dipendente dal 32 o 64
un po ‘tendono ad essere da qualche parte intorno al 4 6
8 12 qualcosa di simile quindi a seconda di
cosa stai facendo con questo nuovo rapporto
sarà impostato di conseguenza, ma se tu tu
sai che stai correndo su un particolare
server su cui stai lavorando a 64 bit
architettura conosci il tuo modo
il programma si sta comportando e presumendo che tu abbia
ottimizzato tutte le stringhe come me
sottolineato in precedenza puoi iniziare a
sperimentare con questo e lo farà
una differenza abbastanza significativa per il
performance, non ne sto parlando
punti percentuali potrebbero salire 50
forse anche di più in termini di
percentuale di prestazioni a causa della
modo che le tue allocazioni, se lo sei
creando un numero enorme di oggetti tu
probabilmente vuoi impostare un nuovo rapporto fino a
qualcosa come uno o due se ce n’è uno
più grande di quanto tu abbia effettivamente ottenuto molto
più grandi raccolte di rifiuti in arrivo
ora ti faccio un’idea qui x MX
efficacemente ti dà il nuovo e il
vecchi i bit leggermente di grado sono i bit
di memoria che non sono ancora stati assegnati così
effettivamente è lì che è consentito
usalo ma non così abbiamo il
Eden lo spazio sopravvivibile due di quelli
numero uno e due o due e da è
che a volte hai chiamato hai il vecchio
che è anche chiamato di ruolo
e poi il perm gen permgen tende a
dire aggiustare come ho detto prima o funziona o
non funziona o c’è un po ‘
di raccolta dei rifiuti e in modo efficace
è il nuovo rapporto che puoi cambiare
su questi quindi questo è probabilmente quelli
due parametri XM xx ms e nuovi
rapporto probabilmente i tre parametri sono
andando a fare la differenza più grande per
la tua macchina, infine, se entri in se
vuoi davvero entrare un pochino
accordatura più fine si può effettivamente anche
imposta il rapporto tra il nuovo o il
eden e lo spazio sopravvissuto e di nuovo
questo presume che tu abbia davvero
analizzato la tua applicazione la maggior parte del
le applicazioni che ho incontrato sono molto importanti
troppo complesso e ha troppi diversi
le cose in realtà funzionano
questo livello se arriviamo a entrare
ho trovato questo tipo di livello di messa a punto
risultati molto migliori guardando il
architettura guardando il codice allora
entrare in questo livello quindi il mio avvertimento
qui sarebbe se si sta ottenendo in
questo tipo di livello che si ha realmente bisogno di
sai cosa stai facendo hai bisogno del tipo
di pepe Dines del mondo di essere in grado
per raggiungere questo tipo di livello di sintonia
e in realtà ottenere qualcosa di utile da
ho un altro paio di diapositive qui
ora è un paio di strumenti ora questo è
di nuovo prima di sintonizzare il tuo VM
ci sono alcune cose che devi fare
guardare l’architettura di alcuni dei
punti che ho fatto prima del
errori stupidi di mettere troppo
memoria in una macchina o non avere
abbastanza memoria nella macchina ma a
mettendo troppo sul vm non oltre
scrittura di soluzioni complesse eccessivamente complesse
roba a soluzioni costose troppo complesse
le banche dati vanno oltre le righe da utilizzare
database solo perché hai un
database ufficiali tutto ciò che è necessario
andare sotto Oracle tutto deve andare avanti
sybase o qualunque cosa possa essere abbastanza spesso
disco è perfettamente utile nei negozi Oracle
è comunque su un disco e tutto il DS è
meccanismo è un grande complicato e
gadget incredibilmente costoso che dà
sei un’interfaccia tra il tuo
applicazione
e il disco un sacco di cose che tu
il negozio può essere scritto direttamente su disco
puoi accenderlo puoi indicizzarlo che puoi
crea i tuoi indici personali funziona esattamente come
beh, supponendo che tu sia stato
attraverso la tua architettura supponendo che
hai finalmente completato il tuo codice
puoi iniziare a scendere a guardare
la Java Virtual Machine e guardando
il tipo di prestazione che puoi ottenere
di esso gli strumenti che userete
e spero che ci sia un sacco di gente
usa qui jconsole J visualvm che era un
chiedi mani a pochi di voi sì, questi sono
strumenti che ti daranno davvero il
capacità di capire come le vostre macchine
essendo usato quel grafico che ho messo su
in precedenza era solo un taglia e incolla di fatto
il taglia e incolla di qualcun altro, ma io ho
ho degli altri che stavo per mettere
lì sembra proprio più bello di
mio, ma ti darà un’idea di
come è stata utilizzata la memoria che puoi
guarda come sono stati utilizzati i fili
tutti questi parametri ancora no
scordati se stai utilizzando il multi-thread
hai bisogno di più memoria la memoria è
diviso le sue discussioni in modo se il tuo sistema
funziona in un thread e ha bisogno di minimo
60 per Meg di RAM diciamo che abbiamo bisogno di 128
allora se hai quattro thread e
moltiplicare che fino si sta andando ad avere bisogno
512 almeno per l’esecuzione in quattro thread se
stai facendo un tet teté sei tu
sapere come funzionano i calcoli in modo che questi
sono i tipi di parametri al
in fondo abbiamo una grande lista no , no
ti suggerisco di mettere tutto in una volta
ma questi ovviamente li avrai
scivola poi in modo che non è necessario
abbattere queste cose, ma queste sono
cose che ti danno abbastanza
impressionante lista di informazioni su come
il garbage collector sta funzionando e e
come funziona di nuovo in combinazione
con qualcosa di simile a j stat ti mostrerà
come è la Java Virtual Machine
usato come è stato assegnato lo spazio
come loro lo spazio eden il nuovo il vecchio
ecc. sono stati utilizzati all’interno della macchina
ti darò molte informazioni su
come sintonizzare la tua applicazione una cosa
Ho anche fatto tipicamente ottenere qualcuno
guardare il codice e tu pensi
wow stiamo generando molti oggetti
perché questa cosa funziona così lentamente?
non provare a sintonizzarlo su quel punto
improvvisamente dico oh okay, cambieremo
il nuovo parametro gen e tornare a
la tua domanda e vedi perché sei
usando alcuni oggetti vedi perché sei
ottenere così tanti oggetti in un perfetto
mondo dovresti essere davvero dovresti essere
guardando anche oggetti soggetti a soggetti di Ryu
quindi cose come questa da provare e portare
questi giù farà davvero un
enorme differenza per la tua applicazione così
in chiusura se vuoi davvero di più
grinta come una meravigliosa parola inglese fuori
la tua applicazione che lo sottintende
implica tutto e basta di più il mio
raccomandazione e anche questo è finita
anni e anni ma è stato davvero acquistato
attraverso di me nell’ultima coppia di
le settimane guardano prima alla tua architettura
ne uscirai molto di più
la tua messa a punto delle tue performance
architettura in particolare se sei
lavorando in un’architettura distribuita se
hai delle transazioni seriamente pensate
riguardo a farli uscire dalle persone oltre l’uso
transazioni che stai cercando da 10 a 100
i tempi peggiorano le prestazioni della gente
ossessionato dall’uso delle transazioni
compensazione di tutte le transazioni per
esempio ORM relazionale dell’oggetto mappandolo
uccidi le macchine è che stai andando
da un mondo orientato agli oggetti in a
mappatura relazionale mondo loro due
semplicemente non andare insieme, quindi pensa
come puoi cambiare l’architettura di
così una volta che sei stato
attraverso questo una volta che sei passato attraverso
queste ottimizzazioni guardano il codice
guarda la Java Virtual Machine il
Probabilmente dirà la Java Virtual Machine
di più su quanto male il codice è
scritto poi in effetti quanto male la JVM
è in esecuzione in modo da prendere i messaggi da
che tornare al tuo codice modifica il tuo
codice e poi tornare alla JVM quando
sei assolutamente sicuro che sia perfetto allora
inizia ad applicare alcuni di questi suggerimenti JVM
penso che sia più o meno grazie
molte domande a tutti
niente affatto oh sì ne abbiamo uno sopra
qui non sono un esperto per essere onesto
sui cambiamenti ne ho ancora due molto
grandi clienti che penso che lo faranno
imbarazzare il nostro nome persone come il
banca federale di riserva e questo tipo di
luoghi su cui sono ancora in esecuzione
Java 1.4 quando ero a jpmorgan inseguiamo noi
riuscito a giustificare l’uso di Java 1.5 o
cinque come si chiama ora solo puramente
il guadagno del ventuno per cento delle prestazioni
il risparmio era ben oltre i 10 milioni
dollari in termini di risparmio quindi
clienti che abbiamo tipicamente quello noi
per il codice che generiamo abbiamo dovuto
stai molto attento a non andare oltre le cinque
Ho Java 1.7 sto usando Java 1.7 ma
sfortunatamente per il mio utilizzo tende a
essere una sorta di sogno di pipa per essere in grado di
metterlo in a qualcosa d’altro, quindi sono
paura di non essere un esperto di sul
cambia a parte il tipo di bello nuovo
caratteristiche mi dispiace non posso darti un enorme
quantità di informazioni su questo, ma lo so
alcuni colleghi puoi se lo sei
interessato posso metterti in contatto
un’altra domanda qui quindi era una domanda
guardando alcuni guardando il tipo di
ottimizzazioni su cui ho lavorato
byte e stringhe che dovevano essere
un esempio che gli esempi
erano una sorta di codice tipico che ho trovato
quali sono le raccomandazioni per XML
parsing Devo ammettere un po ‘di parzialità
questo perché è una delle mie aziende
c24 che è all’esterno ed efficacemente il
è che è una delle soluzioni
in modo efficace è come l’ associazione Java così
Jack’s BG Beck’s questi prodotti tipici
è necessario un Java per scusare uno schema XML
creano una mappatura Java esatta a
questo e in effetti positivamente c’è molto
di cose quando sei coinvolto in un
XML ovviamente che vuoi essere
attento a uno è la prestazione sono sicuro
stai bene
abbiamo familiarità con le differenze tra
Bind Java DOM e pause sessuali per
esempio se stai solo prendendo
l’informazione fuori dal sesso fa una pausa lontana
più veloce se ne stai prendendo un sacco
le informazioni finiscono per metterlo in pausa
più volte poi hai
convalida di cui preoccuparsi e cose
così, se avessi un cappello di vendita
che io non lo faccio perché sono un CTO piuttosto
rispetto alla persona di vendite direi andare
oltre al contatore c24 e dare un’occhiata
laggiù è i nostri clienti e il
quelli che sto rappresentando qui usano
quel prodotto per fare il complesso XML
analizzando in modo che includa il tipo di iso
20022 FP ml quel tipo di cose lì
sono cose che lo supereranno più velocemente
non c’è nulla che io sappia di quella volontà
convalidalo più velocemente quando parlo
convalida intendo al di là dello schema
validazione usiamo ancora qualcosa del genere
sir C per la convalida dello schema
non è una risposta semplice ma unica
spero di darti qualche altra idea
domande sì qui chiusure e
cos’hai già sentito da tutti
che ho sentito perfettamente ciò che è sbagliato
con le tue orecchie qualcuno con un estraneo
accento simile al mio ma molto più lontano
a sud dai suoni di ciò che ovviamente
c’è molto di più su java 7
di quanto io parli del consiglio in a
architettura di concurrence in concorrenza
è in realtà se ho capito bene è
in realtà più verso o il
prestazioni più verso la generazione
un sacco di piccoli oggetti quando hai
cose come chiusure in cui le funzioni
stanno effettivamente generando classi come
bene e poi hai cose come la
bidone della spazzatura concorrente che viene
anche così, di nuovo, non è questo
non è un consiglio un pezzo di no
usa molti oggetti questo era un pezzo di
consigli per la situazione che abbiamo avuto
particolare su questo particolare
ovviamente eseguiamo multi-thread e
questo particolare problema che avevamo era
era nella creazione dell’oggetto così dispiaciuto
come ti chiami Josh, ho visto Joshua?
sei fuori così tanto se vuoi chiedere
domande è seduto là
più tutte le domande hai avuto una domanda
Ero quel connettore DC visiva okay così
plugin GC visivo per J visualvm I
ha notato un sacco di plugin così è
ovviamente uno di quelli da usare dà
sei molto bravo quindi i fili si impilano
dimensione come ottimizziamo che sia
difficile quando penso che qualcuno lavori
nell’ambiente multi-thread lo dirà
è che è uno di quelli a caso
cose non appena inizi a mettere
inizia a guardare nel thread
diventa un po ‘come una sorta di Heisenberg
principio di indeterminazione non appena si
inizia a guardarlo cambia tutto
e tu provi a colpire qualcosa di mio
l’esperienza è puramente incostante
quella parte ancora una volta è una specie di cosa
che vorrei coinvolgere persone come
Martin e Kurt e pepedino a
fondamentalmente esamina questo tipo di cose
per un letteralmente un mese su cui lavorare
questo e quei ragazzi corrono piuttosto a
molti corsi sul livello veramente profondo
messa a punto delle prestazioni più domande a
tutto qui è impressionante, quindi a
ha fermato la spazzatura del mondo
collezione per 30 secondi effettivamente lo farei
piace prenderlo e usarlo come un
esempio, è impressionante
trentaduesima raccolta dei rifiuti e come
vorrei andare a fermare puoi prendere
istantanee in modo da poter utilizzare molti di questi
strumenti efficaci per scattare istantanee e
il mio consiglio su questo sarebbe effetto intendo
sei i tuoi vecchi ricordi, ovviamente
abituarsi troppo in fretta, così puoi
qualcosa di semplice come guardare il
nuovo rapporto potrebbe iniziare ad aiutarti con
questo ma efficacemente gli strumenti lo faranno
darti una visione molto migliore di ciò che è
proseguendo dentro di loro alcuni dei
parametri che hai avuto lassù
poco prima di imbarazzanti screensaver
venire ma questo torna su di voi ottenere un sacco di
le foto dei miei bambini in altri modi che il
gli strumenti ti daranno molte informazioni
puoi fare i dump della memoria completi
discariche dell’heap dell’heap che significherei
questo ti darebbe una sorta di
visualizzazione di cosa sta succedendo
dentro e quelle sono quelle sono cose
su cui puoi correre su di te, se tu
esegui la j stat per esempio puoi correre
che ogni secondo o più puoi
vedere efficacemente come la tua memoria
l’uso è esaurito intendo che lo farebbe
implica in modo efficace a seconda che
stai utilizzando la modalità server o client attiva
la JVM dipende dal rapporto
effettivamente quello che sta succedendo sei tu
probabilmente riempire la tua vecchia generazione
quale è immagino abbastanza grande se
hai 30 secondi in cui hai ottenuto
16 gig o più un concerto hai un molto
macchina lenta poi o o è occupato è
multi-threaded multi il ​​problema con a
molte di queste cose sono quando inizi
davvero avvicinarsi ai limiti che hai
ha ottenuto la macchina virtuale in un certo senso
competere con la spazzatura
i collezionisti mi dispiace che tu abbia preso la spazzatura
collezionista in competizione con il tuo
applicazione e questi otterrai
molte anche molte raccolte di rifiuti
Voglio dire, non c’è una risposta per questo
forse troverai il concorrente
il netturbino raccoglierà cose
più veloce ti suggerirei probabilmente il
cose iniziali da guardare sarebbe
cercando di avere un’idea dell’utilizzo del tuo heap
e guardando i diversi rapporti di
la nuova generazione alla vecchia generazione
ma dovresti essere in grado di batterlo
giù abbastanza considerevolmente spererei di
sotto un secondo altre domande siamo noi
facendo per tempo siamo buoni per il tempo così
Grazie mille
tu

Please follow and like us: