És l'ús de 80 memòria?
Tot i que un servidor mitjà pot tenir 16 GB o més memòria, l'ús excessiu de la memòria en les aplicacions empresarials s'ha tornat un problema cada vegada més freqüent i crític. D'una banda, un alt grau de paral·lelisme i una manca de consciència sobre la part del desenvolupador pot portar ràpidament a l'escassetat de memòria. D'altra banda, pot haver-hi suficient memòria, però amb JVMs usant gigabytes de memòria, les pausas GC poden ser inacceptables durant molt de temps.
Augmentar la memòria és la tendència òbvia a les pèrdues de memòria o un programari escrit malament, però fet sense pensar que això pot empitjorar en la llarga carrera. Al cap i a la fi, més memòria vol dir una suspensió de col·legues d'escombraries més llarga.
Les següents són les dues causes més comuns per l'ús de memòria Java.
Ús de la memòria cau incorrecte
Pot semblar contraflexiu, però l'ús de la memòria cau excessiva pot portar fàcilment a problemes de rendiment. A més dels problemes típics, com ara la pèrdua i el gir alt, una memòria cau sobreutilitzada pot reduir ràpidament la memòria disponible dels índexs. La mida del cau de la memòria cau pot arreglar el problema, suposant que podeu identificar la memòria cau com a causa de l'arrel. El problema de la clau amb la memòria cau és Referències suaus , que tenen avantatge que poden ser alliberats en qualsevol moment a la discreció del col·leccionista d'escombraries. És aquesta propietat la que els fa populars en les implementacions de la memòria cau. El desenvolupador de memòria cau assumeix correctament, que les dades de la memòria cau s' allibera en l' esdeveniment d' una manca de memòria potencial; en essència, per evitar un error fora de l' aplicació (en contrast de Referències febles , que mai impedeixen la col· lecció d'escombraries d' un objecte i no seria útil en una memòria cau).
Si està mal configurat, la memòria cau creixerà fins que la memòria disponible s'hagi acabat, el qual fa que la JVM per activar una GC, netejant totes les referències suaus i eliminant els seus objectes. L'ús de la memòria baixa al seu nivell base, només per tornar a començar a créixer de nou. Els símptomes s'equivoquen fàcilment per a una generació jove configurada incorrectament i sovint desencadenen un exercici d' ajustament GC.
S' està descarregant el patró d' antialiàsing de la sessió
Quan una sessió HTTP s' utilitza com a cau de dades, ens referim a ell com a cau de la sessió amb un patró antipatron. S' ha implementat correctament, s' usa la sessió HTTP per a emmagatzemar les dades d' usuari o un estat que necessita sobreviure més enllà d' una sola petició HTTP. Això Estat conversacional es troba en la majoria d' aplicacions web que es tracten amb interaccions d'usuari no proporcional, però hi ha problemes potencials.
Primer, quan una aplicació té molts usuaris, un sol servidor web pot acabar amb moltes sessions actives. La majoria, és important que cada sessió es mantingui petita per evitar usar tota la memòria disponible. Segon, aquestes sessions no seran alliberades explícitament per l' aplicació! En comptes d' això, els servidors web usen un temps d' espera de sessió, que pot ser molt alt per a incrementar la comoditat dels usuaris. Això pot conduir fàcilment a les grans demandes de memòria i sessions HTTP que estan a l' ordre de múltiples megabytes de mida.
Els llocs cau de sessió són convenients perquè són fàcils d' afegir objectes a la sessió sense considerar altres solucions que poden ser més eficients. Això sovint es fa en mode d' incendi i d' espera, el que significa que les dades mai s' eliminaran. La sessió s' eliminarà després que l' usuari hagi deixat la pàgina, o de tota manera, així que podem pensar, per què preocupar-nos? El que ignorem és que els temps d' espera de la sessió des de 30 minuts fins a diverses hores no tenen precedents.
Una versió actualment popular d' aquest patró antic és el mal ús de les sessions hibernades per gestionar l' estat conversacional. La sessió hibernada es desa en la sessió HTTP per facilitar l' accés ràpid a les dades. Això vol dir que l'emmagatzematge d'un estat molt més necessari, i només amb un parell d'usuaris, l'ús de memòria s' incrementa immediatament.
Si parellam una gran sessió HTTP amb replicació de sessió, obtenim arbres grans d' objectes que són cares de sèrieitzar, i moltes dades a transferir als altres servidors web. Acabem d'afegir un problema d'actuació greu a la part superior del fet que ens quedem sense memòria ràpidament.
Artículos Relacionados:
- La memòria del 8GB és prou unida per al disseny gràfic?
- Per què necessiteu 64 nuclis?
- És 256 GB d'un conjunt de memòria?
- És millor tenir més nuclis o més grans GHz?
- Memòria RAM -