2. ¿Cómo funciona la carga de las classes para ejecutarse?
- Proceso de carga "Loading": En este proceso se valida que se el formato de los ficheros (bytescodes) es válido. El proceso se hace por los Classloaders que tiene la JVM, siguen una arquitectura gerárquica, donde el control lo tiene siempre el Boostrap ClassLoader que es el nativo de la JVM y seguidamente el resto de ClassLoader de la aplicación. Antes de cargar una clase estos classloader siempre llaman al ClassLoader padre para ver si lo tiene y esa es la forma de protegerse por ejemplo contra código malicioso o clases "falsas" del API de Java.
- Proceso de "lincado" "Linking": Verificación y Seguridad. Se verifica que el código no pueda hacer accesos no deseados a resursos del sistema ni ejecutar código malicioso. En el caso de los appletes la seguridad es mucho más restrictiva y está "supervisada" el sandbox.
- Procesos de inicialización "Initializing": Se inicializan los objetos para su ejecución.
3. Area de Datos: Runtime Data Areas:
- Hilos de ejecución "pc Program Counter":Cada método de una clase se ejecuta por un único thread de la JVM. Muy importante tener esto presente en la programación Java junto con la siguiente característica. De serie sólo los métodos son thread safe y si están bien programados.
- Pila de la JVM "Java Virtual Machine Stacks": Cada hilo tiene supila y se gestiona dinámicamente accediendo a recursos del Heap de memoria de la JVM.
- Heap de memoria: Es toda la memoria que se comparte con todos los threads de la JVM. Se deja libertad al que implementa la JVM a implementar la gestión automática de la emoria. Típicamente hay un "garbage colletor" recolector de basura con sus algoritmos de actuación. También se deja libertad para inicializar y configurar la gestión de memoria por parte de la máquina virtual. Aquí es donde entra en juego las diferentes opciones comerciales a la hora de adquirir una JVM.
- UnsupportedClassVersionError, NoClassDefFoundError en proceso de carga de clases.
- StackOverflowError, OutOfMemoryError en consumo de los recursos de memoria de la JVM
- Esto no está en las especificaciones JSR y por tanto cada fabricante tiene las suyas.
- Nosotros durante el curso utilizaremos la JVM de SUN.
- ¿Cuales son los parámetros?
JVM
http://en.wikipedia.org/wiki/Java_Virtual_Machine
http://www.jcp.org/en/jsr/detail?id=924
http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html
http://blogs.sun.com/watt/resource/jvm-options-list.html
Classpath
http://java.sun.com/j2se/1.5.0/docs/tooldocs/windows/classpath.html
ClassLoader
http://java.sun.com/developer/technicalArticles/Networking/classloaders/
No hay comentarios:
Publicar un comentario