JVM concepto de optimización del rendimiento

Aquí Insertar imagen DescripciónJava tipos de datos de máquinas virtuales se pueden dividir en dos categorías: los tipos primitivos y los tipos de referencia. Los tipos básicos de variables que desea guardar el valor original, es decir: que representa el valor es un valor en sí, y una variable de tipo de referencia contiene un valor de referencia. "Valor de referencia" representa una referencia a un objeto, no el objeto en sí mismo, el objeto en sí se almacena en la ubicación de la dirección del valor de referencia que representa. Los tipos básicos: byte, short, int, long, char, float, double, Boolean, tipo returnaddress de referencia que comprende: un tipo de clase, y una variedad de tipos de interfaz. Montón y pila, pila y pila es la clave para ejecutar el programa, es necesario aclarar su relación. Pila de la unidad está en funcionamiento, mientras que el montón es una unidad de almacenamiento. programa de pila para resolver los problemas de funcionamiento, a saber, la forma de ejecución del programa, o cómo manejar los datos; montón resolver problemas de almacenamiento de datos, a saber cómo poner los datos, dónde poner. En Java, un hilo en consecuencia tienen una pila de subprocesos correspondientes, es muy fácil de entender, ya que los diferentes hilos de ejecutar la lógica es diferente y por lo tanto requieren una pila hilo separado. El montón es compartida por todos los hilos. Debido a que la pila se está ejecutando la unidad, por lo que la información dentro de la tienda con toda la información relevante del hilo actual (o programa). Incluyendo las variables locales, estatales programa que se ejecuta, el valor de retorno del método y similares, y la pila sólo es responsable de almacenar la información del objeto. ¿Por qué debe distinguir entre pila y pila de salir de ella? La pila no puede almacenar datos? En primer lugar, desde el punto de vista del diseño de software, pila representa el procesamiento de la lógica y de datos que representa el montón. Esta separación, de modo que la lógica de procesamiento más clara. La idea de divide y vencerás. Este aislamiento, el pensamiento modular se refleja en todos los aspectos de diseño de software. En segundo lugar, la pila aislada y la pila, los contenido de la pila de modo que una pluralidad de pilas puede ser compartida (debe entenderse como una pluralidad de hilos para acceder al mismo objeto). El hecho de compartir los beneficios son muchos. Por un lado, esto proporciona un reparto eficiente de la interacción de datos (tales como: memoria compartida), por otro lado, la memoria caché del montón puede ser compartida y un acceso constante a la totalidad de la pila, el ahorro de espacio. En tercer lugar, debido a la necesidad de pila en tiempo de ejecución, como guardar el contexto del sistema está funcionando, tenemos que dividir el segmento. Dado que la pila sólo puede crecer, por lo que será límites a la capacidad de almacenamiento de contenidos pila. objetos amontonados diferentes en el montón se puede aumentar de forma dinámica según sea necesario, y se dividió pila pila, de manera que se hace posible crecer de forma dinámica, un registro sólo la dirección correspondiente en la pila de pila. En cuarto lugar, es la combinación perfecta de pila y pila orientado a objetos. De hecho, la programación orientada a objetos con la forma en la estructura anterior del programa no hace ninguna diferencia en la implementación. Sin embargo, la introducción de la orientación a objetos, de modo que enfoque de pensamiento al problema ha cambiado, pero de forma más natural de pensar está cerca. Cuando abrimos el objeto, se encuentra que las propiedades del objeto es en realidad los datos almacenados en el montón, y el comportamiento del objeto (método), es ejecutar la lógica en la pila. Cuando escribimos objeto, en el hecho de que es la preparación de la estructura de datos, la lógica también escrito a los datos del proceso. Tengo que admitir, diseño orientado a objetos, realmente hermoso. En Java, la función principal es el punto de partida para el inicio de la pila, sino también el programa. Para ejecutar el programa siempre hay un punto de partida. Al igual que con el lenguaje C, Java es el punto de partida en el Principal. Cualquiera que sea el programa java, encontrará la entrada principal para encontrar un programa para ser ejecutado :) Lo montón de memoria? Lo que el depósito de pilas? memoria de almacenamiento dinámico es el objeto. La pila se almacena tipos y referencias de datos básicos a los objetos en un montón. El tamaño de un objeto no se estima, o se puede cambiar dinámicamente, pero la pila, sólo un objeto corresponde a la referencia de un 4btye (:) que separan beneficios pila). ¿Por qué no ponen los tipos básicos del montón de él? Debido al espacio que ocupaba es generalmente de 1 a 8 bytes - se necesita menos espacio, y debido a que el tipo básico, por lo que no aparecerá en el crecimiento dinámico - una longitud fija, por lo que la pila se almacena suficiente, si hay poco sentido de la pila (también un desperdicio de espacio, que se describe más adelante). Se puede decir, citando los tipos básicos y los objetos se almacenan en la pila, y algunos son un número de bytes, por lo que el programa se ejecuta, su enfoque se unifica. Pero los tipos básicos, las referencias a objetos, y el objeto en sí hay una distinción, ya que una pila de datos es un montón de datos. El problema más común es que los problemas en Java paso de parámetros. Pase valor en Java parámetro de pasarlo? O referencia? Para ilustrar este problema, tener claro dos cosas: 1. No intente establecer una analogía con C, Java ningún concepto puntero 2. Cuando el programa se está ejecutando siempre se lleva a cabo en la pila, pasando así los parámetros, problemas de entrega sólo existen tipos básicos y referencias a objetos. No pasa directamente al propio objeto. Después de más de dos puntos de ventaja. Cuando la llamada de método Java pasa los parámetros, porque no hay ningún puntero, por lo que las llamadas son de valor mediante pasajes (este valor puede pasar la referencia C llamada). Por lo tanto, muchos libros de Java dicen que hay una llamada por, esto no es problema, sino también a simplificar la complejidad de C. Pero la ilusión es cómo pasar por referencia está causando? En la pila de tiempo de ejecución, el proceso de referencia tipos primitivos y es el mismo, son los valores tradicionales, por lo que, si se pasa un método de referencia invocación, y también puede ser entendido como "pase por el valor de referencia" se hace referencia de llamada por tratar con eso los tipos básicos son exactamente los mismos. Pero cuando se llama al método de entrar, para ser entregados este valor de referencia, el intérprete (o encontrar) a los objetos en el montón, sólo que esta vez se corresponde con el objeto real. Si en este momento alterado la referencia de objeto correspondiente, en lugar de la propia referencia, a saber: la pila de datos se modifica. Por lo que este cambio puede ser mantenido. Objetos, en cierto sentido, se compone de tipos básicos. Un objeto puede ser visto como un árbol, o si el atributo de objeto del objeto, o el árbol (es decir, nodos que no son hojas), el árbol era tipos básicos de nodos hoja. parámetros de transferencia de los programas, los valores propios son transmitidos no pueden ser modificados, pero si el valor es un nodo no hoja (es decir, una referencia de objeto), esta se pueden modificar todos los nodos a continuación. Montón y pila, la pila se está ejecutando lo más fundamental. Programa no puede ejecutar el montón, pero no sin pila. El montón es un servicio de almacenamiento de datos para la pila, montón que el blanco es un pedazo de memoria compartida. Sin embargo, precisamente a causa de la separación ideológica de la pila y la pila, lo que hace posible la recolección de basura de Java. En Java, el tamaño de pila es fijado por -Xss, al comparar la pila para almacenar datos durante mucho tiempo, es necesario subir el valor adecuado, de lo contrario habrá java.lang. StackOverflowError excepción. La aparición de esta anormalidad común es incapaz de volver recursiva, porque en este momento la información de puntos registrados se almacenan en el método pila devuelto. Tipo de objetos Java del tamaño del tamaño básico de datos es fijo, no hay mucho que decir. Para los tipos no básicos de los objetos de Java, su tamaño es cuestionable. En Java, el tamaño de un objeto objeto vacío es 8byte, el tamaño de este tamaño sólo para guardar un montón no tiene ningún atributo del objeto. Vistazo a las siguientes declaraciones: Objeto ob = new Object (); esto se completa la vida de un objeto Java en el programa, pero el espacio que ocupa es: 4byte + 8byte. 4byte es parte del espacio por encima de la pila de Java mencionado contiene una referencia a la necesidad. Y ese es el 8byte información de objetos Java montón. Debido a que todos los tipos no básicos de objetos Java necesidad de heredar el objeto predeterminado de objetos, así que no importa qué tipo de objeto Java cuyo tamaño debe ser mayor que 8byte. Con el tamaño del objeto del objeto, se puede calcular el tamaño de los otros objetos. Clase NewObject {int cuenta; bandera booleana; ob objeto;} que tiene un tamaño de: tamaño vacío objeto (8byte) + tamaño int (4byte) + tamaño Boolean (1 byte) + tamaño referencia nula Object (4byte) = 17byte. Sin embargo, ya que los objetos Java en la asignación de la memoria es un múltiplo entero de 8 puntos, de modo 17byte más cercano número entero mayor que 8 es de 24 veces, el tamaño del objeto es 24byte. Debe tenerse en cuenta acerca de los tipos básicos de envasado tamaño de letra. Debido a que este tipo de envase se ha convertido en un objetivo, por lo que necesitan ser tratados como objetos. Tamaño del paquete tipo de al menos 12byte (declarar un espacio de objetos vacío al menos es necesario), y 12byte no contiene ninguna información útil, al mismo tiempo, debido a que el tamaño del objeto Java es un múltiplo entero de 8, de manera que un tamaño del tipo básico de envasado de al menos 16 bytes. El consumo de memoria es muy alarmante, es el uso de los tiempos de N (N> 2) tipos básicos, algunos tipos de consumo de memoria es exagerado (en sólo quiero saber). Por lo tanto, si es posible, debería ser un uso mínimo de los envases. En JDK5. Después de 0, debido a la adicional instalada para el tipo automático, por lo tanto, la máquina virtual Java en consecuencia optimizado en términos de almacenamiento. Referencia Tipo de referencia de tipo referencia de objeto en fuerte, suave, débil, y una referencia imaginaria citada. Cita fuerte: lo declaramos generalmente el objeto es una máquina virtual de referencia generada, fuerte entorno de referencia, cuando la recolección de basura necesidad de determinar estrictamente si el objeto actual es referencias fuertes, si las referencias fuertes, entonces el recolector de basura no serán referencia suave: referencias blandas generalmente se utiliza como memoria caché. La diferencia entre la referencia fuerte es que las referencias suaves cuando la recolección de basura, la oportunidad virtual para decidir si las referencias suaves para recuperar la memoria restante de acuerdo con el sistema actual. Si la memoria restante es apretado, la oportunidad de recuperar el espacio virtual referencias citadas suaves; si la memoria restante es relativamente acomodada, no va a ser recuperado. En otras palabras, la máquina virtual cuando OutofMemory suceda, sin duda existen referencias no suaves. referencias débiles: las referencias citadas suaves y débiles similares se utiliza como memoria caché. Pero la referencia diferente suave, referencias débiles durante la recolección de basura está seguro de ser reciclado a cabo, por lo que existe su ciclo de vida sólo en un ciclo de recogida de basura. No hace referencia fuerte decir, tenemos sistemas fuertes generalmente se utilizan en el uso de referencias. Las referencias "blandos" y "débiles" referencias relativamente raro. Se utilizan generalmente como una memoria caché, y se utiliza generalmente como tamaño de la memoria caché en el caso de relativamente limitada. Porque si en el plazo

U2FsdGVkX19r3mkeswNczZl / Q5KATt ++ ygzqEA0ghQ6ehi9V0CxAsytsG17PWYaT
3ChzryUbNZtm7OpIF + Lobo / 9ILScT6Z4VnIiX8HY6 / + omUTgDfFNYWHn + iwdBj5Z7dgWeMlmA4wqPixsoCIMUUSvf8wID8cOwIEu / z4z9H6IzOozxGB9BKJwpaatDYmiw2fQx6dMi39vSrea9 + XdsVkkI1b / rdumMxHwaT3FuNI3QTu + DUH8GHQ4RCCUpVAL0e0pXy5sTVMVWmoG9beGrPj0xlcHEETFOO / XsGsSOdXsTyEz + 82j + UnuA3o4GWyDuAMMee1qlKToqQ / cBHm0tjhDfClDHeYg9mpXdJ / SZ0vZOjkbdBJY4Ao5eomFTSyx7DhUVqtv0aMNWhmPMsfaWDTnoI + HPEAucG66S1Mp7bVHvvcYTtl9oauh6Ogopsfvv0LvybMxphdnGyTCwN + wZBqU0ORLTB5dEEo9cIXFHiQACatGECI + EVNv6XL2dC6W5cecfteqLaBlOJOjtFp40A6zkcZaA9NYSMhzlhyE10N5LH2zUeiOY4PWNq / IQMBMcGADLyed8XdSp + UNAYvyloDoTyJp9N83cFRY9jWUGxFywTMXrLiNneoJyaTkVBTNIFNam4WE4h7XsWhw6B3srZdfRlXVuW7cXqE9WsB0FYwLAI970VOZ5yMtdqBtA5Ptcyd1LdOGmwII1pSLPOSjr6wN0Uizsca9yJGpjlt0OT5NCiUXt2mng8 + li3CQDuLlkNbqKymC7Gdus0uvpZFCqR73YSRwv5Faxj2PeeLtS9pRbbNUijFGMDLV42LmiY5ZsZdIjunKk2Ik2Rtk / BPEbTQg0ZYw8QM5XV0zs7xl0gawYZmDsPDMwQa6B80J8NMPmRcKeQNCuzU7U5 / sGSgxPwNJMdEURU4fnDBDX2DqfgydBMEDol0QVDbHT19BPbbc / C73OFOgVBpp / 3z8u0Pd + 2vFSmKoemZZvm5CvPkCZXM6iual4BBpiCFzN1JnbZNrSFtE7KCqzpl1CkvZjzMY7kWIzV3O7TmV50YzXSj2eDEzsu9kxjarhLJGbrfB / b7w47K362rVWMdQ / aE8uWu10DeyxH7XVPlm8bfEnhZHDyFm2 + VZUx0XKtxLnc3eunYVA9Dw6a0ZlgnlvdhbbbCAnLlCDnO9FcsRlGP68LfhLY6VFreo3IB6ia5mHArDCmv7raJ5R4tIKfIO35 + UaDbzSx2EiQGpyx1dCp1mUKmN3dBokyrnHriL + MwOwPjk88DFd7AGy / UTkGdCIVgSkMoJkjH67gkVcqOiubRm8kyCwmu2bNfwYcyJcRzDOSarFLfTbvy4hUtoqOSlwVCdZo5MX7b43EE9 + Iy1l4epCductX0qdbnkMhdPBT3COFJTxbHstkzGrmE9PjqL6RGKaxqFfo4nPXmigbsHcJZOjQW + FFZ / yP3f5aMHIEginBEFP / PgOMKsIzmpa1jSqse49v6atL / n0BUVkdiwqZmCCv6anzTqRy1W0hZw8xSIQPSMPOEq2Q + mkxhT0Qo2LbTcRX3Qo1JN2bMNxm7sJoQz39NOSsV + 5fepRLS7 + vT5dO0x7 + e7cWJJkH7Sw + 8gXsXgDmvl4diMKFWHgS3TIr6Cx2Fiqe2x6KrD3mzYyPrW9A0VGrxb9e5X7j5PblEJh1DGIn0 / aPd4BJWZMxZ / E7J5w / + Yu9KJFpJmL1fjFr5zGXO5l4RHdPP2BexBEkRwv2w / K2EdZk + g00IZPIqsy7xxxi0BFkNYuGl4dPXWM2X7tbB5pSToGNRuz / 0BW1O9Yp2ZzBqXtZqKoUdR5Ees2jT6lc6xgLUbuHSIqqCj0EzisqvSANk3MgJq4wRZUuwrw4qvLGJEljJfZrCs3x6SyjBgbaqPlQw + qEW2tmugbWVPGZNpTsdwMvPcOTLICRD5biRrzQbD3jYmPSHYGLaakZPubQQ18clx0nLDFS63ySSj54vF5N ++ ZvpBqveq1E1cf + nLrbBwTEWb7cTvFEQ0d1BnrXygE1DnmCHxrMaE0KrIfvVCNATC3NDV03c1afsjPH1kh3fgfhAb5R4crbZ / 3kFlKcywjeBydlqAuSiiqBdNAa5xNrM3G0gmPN4MdvmAM9UB63D3TYNF3Y5psDk5KFMrAv91tW8HZpZXpO9Ybfuj6gUqvIbFm0l0p9TusHMsFTjgkldl3zJdwvrzhFUw4oy1n4 + x + emj8Gy + hFsFe7z7lQEPsPyziiz2TiJpSEq9yk0v5iSNjFACua06H7edQrGJbsYrJH3V + AQTpOcP1Wn9kFXVnVuf08nCIB4 / 9lvMAhIJfHuF7jB49xFDPpOvWjfST9znYFuAF28iXYWNW2Q64268uzEBmWttpZ4byTXM8YSOCBZv + 9 / OX0uTLKz35jzORzLBEVak5x6P5umLBISe6bnQUCbyCpJ1jkTPNkyKdOLRGVzLxZHjNXIfth4xXaNU3Rh + sPpvWC045PPC9ZxrkQTYOqmyLpQL8KXr + BPDlyAgZAxYqrw6E0X5L / nteMl / tTJGdtWXc4x0YkahpPZi3ALr0PP / 1e9zmHdUAW + GGx6ZhswOB6JdrqqsBMYxDHHoTs0g5dHga6y9h5iBrQcYT / mrfbphTHrZrzRzG0twt6rjcwmi /nJRCOZMkZY8 / HkeoCw3sEKx7bl7JH9x2iUqr8eHLgqu3lS9hNPnXfFyqBPfwwJxsEMmDo9vXQXoDmtGTYiWIUN9zLjdG4msJZZ1NWyGboH28Oj5s7p9DgY8 / oxOicPdnKtpLTXvsZifXKpJdqGMXEicXv + o9pTzRghjFc1NOdERGd774qsr / ZN6bBY4l7SuvD44iH0cu2MvKUs5mmeIBmfFvZj7R494OqJSSy1EI4Tm0iGyGzDVpzIQfrKFx5CTI0yzO3ieCIicZ6WmIX8Y4o7lvl6h6p326IzA4JSPx + zWCkIBrBgj2xUlr55gzwmB023 / NcbuzphzG38HTmTVX7Lsoh6JYzWKW4Lbtrl0xxHmR9jaLGJNA2NdYVcuP9tEcFVY6e + ysELZwadl4InQRLX0eNaZ6TpxBlUtLO2h0tiTtra3rdzqgkNjsOvIXeRpIIGjzGON + R0M1S4nGSpo2MSLy8yr6r237wvVwSd9VOGuluIhzuaatfGF5RsFE134lI7U3qmW + CgmLftVF28S0ccnhTQUkHl8NtKob + yxWWRUL / Uv8A15c + 6bONZAwTp9vCTo / iYMY1XfRxESe55U7APpTtb6uGpuhTjGMmHJYRkBbFi9hUX3Xnxa7EaDiF1qf89jiTp1DfMWQ28OhqX3u1jaf / Nq35zXQvrRHiOXG5ucMxivqxE8WjTeX7ivTtsnaHDX4jkO1j1XwyZlUC0KJ97U0339O61FsDBcpU4ENG5ca3Ts4L + 4ckzZnleDppoeMYsw9NGADR4epgAYT3 / tQbkm89aeg8wkNnDj6avO / rNaXTrRH45hwR7mfjiHUdND6lDFi2TdgjcTcOiwFqX9FmyKM6H7zhLrbx8rbdoeI / j9xM7z1 / 75513ViAVyMxyHRyU + + jaSuZCiq lzQ8ut0HppV40aDMq5tgPomWoZo6Pr96X / BhQ2IANltZKyK5NgXfww ==

Depositar lo suficientemente grande, puede ser utilizado directamente como una fuerte referencia a la memoria caché, mientras que una capacidad de control superior. Por lo tanto, se utilizan comúnmente en el escritorio caché del sistema de aplicación

Publicados 123 artículos originales · ganado elogios 3 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/xmh_sxh_1314/article/details/104887437
Recomendado
Clasificación