一、java文件的执行过程
大部分程序执行过程分为三步:编码---编译---执行
(1)编码:得到.java文件
(2)编译:得到字节码(class文件)
(3)执行:jvm进行类装载,由执行引擎转换成机器码运行
二、运行数据区域
类装载和执行引擎这里不说明,只是说明jvm的运行数据区域:寄存器、本地方法栈、java栈、堆、方法区、运行常量池。下面我们来说说各个区域的功能
(1)寄存器:每一个线程独有,主要是pc寄存器等
(2)java栈:每一个线程独有,每当执行一个方法时,java栈就会压入一个栈帧,该栈帧存储局部变量表、操作栈等等
(3)本地方法栈:每个线程独有,保存本地方法
(4)堆:全部线程共享,java堆是我们最熟悉的,其中分为年轻代、年老代和永久代
(5)方法区:方法区保存了类信息、常量、静态变量、及时编译器编译后的代码等数据
(6)运行常量池:运行常量池属于方法区,存放类和借口的常量,存放方法和域的所有引用
对于java堆的永久代,在hotspot虚拟机中,其实就是方法区,它在jvm运行期间几乎不太可能会被回收,所以有此名称。
三、深入探讨
方法区:事实上方法区保存了运行常量池、全局变量、静态变量以及类信息等等。也就是说静态变量static ,全局变量public static
java栈:保存了局部基本变量(比如int类型等等)、局部变量的引用、中间操作数等等
四、jvm一些简单参数设置
-xms 初始heap大小
-xmx 最大heap大小
相关推荐
JVM 逃逸的原理及分析 JVM 逃逸是 Java 虚拟机(JVM)中的一种优化技术,用于减少 Java 程序中的同步负载和内存堆分配压力。逃逸分析是 JVM 中的一种跨函数全局数据流分析算法,能够分析出一个新的对象的引用的使用...
Java虚拟机(JVM)的垃圾回收(Garbage Collection, GC)是自动管理内存的一种机制,旨在自动识别并释放不再使用的对象,以防止内存泄漏。本文将深入探讨JVM垃圾回收的基本过程,主要包括三个关键步骤:枚举根节点、...
那JVM的内存结构到底是如何呢?JVM做为一个运行在操作系统上,但又独立于os运行的平台,它的内存至少应该包括象寄存器、堆栈等区域。 JVM在运行时将数据划分为了6个区域来存储,而不仅仅是大家熟知的Heap区域,...
对Java中JVM和JMM中技术根据手绘图来详细的展示。加深理解,让自己一次性解决JVM,吊打面试官是我们的目的。
在使用Eclipse集成开发环境时,有时会遇到“Incompatible JVM”(不兼容的Java虚拟机)的问题,导致无法正常启动。这个问题通常是由于Eclipse所依赖的Java版本与系统当前配置的JVM版本不匹配造成的。本文将深入解析...
在深入探讨JVM字段访问优化之前,我们先理解一下逃逸分析。逃逸分析是JVM优化技术的一部分,主要是为了判断一个对象是否会被外部访问,从而决定是否可以进行某些优化,比如栈上分配、标量替换等。在给定的例子中,...
Java程序在JVM(Java Virtual Machine,Java虚拟机)上运行,JVM作为一个平台无关的执行环境,负责Java程序的内存管理和执行。理解Java内存分配原理有助于优化程序性能,避免内存泄露等问题。 在JVM中,内存主要...
### Netty实现原理浅析 #### 一、总体结构概览 Netty是一个高性能的Java NIO框架,由JBoss出品。它不仅提供了一套完整的客户端和服务端开发工具集,而且具备高度可定制化的特点,使得开发者能够轻松构建出可靠且...
Java技术浅析 Java是一种广泛应用于企业级项目开发的编程语言,它具有强大的功能和灵活的特性,使其成为开发大型项目的首选语言。Java技术浅析主要介绍了Java语言的技术关键词、编程技术框架、原理等知识点。 一、...
### Class文件结构浅析 #### 一、引言 在深入了解Class文件的结构之前,我们需要明确Class文件在Java生态系统中的重要地位。Java程序被编译器编译后生成的`.class`文件,实际上是字节码文件,它们是Java虚拟机...
Java虚拟机(JVM)负责执行垃圾回收,但其工作原理对于优化程序性能至关重要。 1、`finalize()`方法: `finalize()`方法是Java中的一个特殊方法,由`Object`类定义,但并不直接与垃圾回收有关。当对象不再被引用时...
【浅析J2EE应用服务器的JAVA类装载器】 Java类装载器机制是Java语言灵活性的关键组成部分,尤其在J2EE应用服务器中扮演着重要角色。理解这一机制有助于开发者更好地部署和管理应用程序,解决可能出现的部署问题。 ...
这篇博客“浅析OSGI的bundle依赖”可能探讨了如何管理和解决这些模块间的依赖问题。 首先,我们来看一下OSGI中的bundle生命周期。一个bundle可以处于未安装、已安装、启动、暂停、停止或卸载这六种状态之一。当...
这篇压缩包内的文件《浅析Java Applet技术在网络管理中的研究及应用》很可能详细探讨了Java Applet如何在互联网环境中帮助进行网络管理和优化。尽管Applet技术在现代Web开发中已逐渐被其他技术取代,但在其鼎盛时期...
JVM(Java虚拟机)为每一个运行中的Java应用程序提供了一个唯一的运行环境。JVM的内存主要被划分为三个区域:堆区、栈区和方法区。堆区(Heap)是存放通过new关键字创建的对象实体的地方,这些对象实体在堆中拥有...
Java类加载原理是Java虚拟机(JVM)的重要组成部分,它负责将类的.class文件从磁盘或网络中加载到内存,并转化为运行时的数据结构,以便执行程序代码。本文将深入探讨类加载机制,包括加载、连接、初始化三个主要...
当我们通过`java 类名`命令运行一个Java程序时,JVM(Java Virtual Machine)会查找包含`main()`方法的`public`类,并执行其中的`main()`方法。由于`main()`是静态的,所以无需实例化类对象,JVM可以直接调用它。 ...