`
lzh166
  • 浏览: 294195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM运行java程序在内存中的分配

阅读更多

第一个JVM诞生于1995年。
JVM的主要任务是:装载class文件并且执行其中的代码。
一个java程序独占一个JVM,一个JVM中只存在一个堆。所以,每个java程序有它自己的堆,但同一个java程序的多个线程共享一个堆。
运行时数据区包括:方法区,堆,java栈,pc寄存器,本地方法栈
方法区:大小不固定,根据需要动态调整,方法区可以被垃圾回收。
方法区包含:提取装载的类的信息,类的静态变量也放到方法区。
每个JVM实例都有一个方法区和堆。他们是由该虚拟机中所有线程共享的。
每个线程都会得到自己的pc寄存器和java栈。
pc寄存器的值指示下一条将被执行的指令。
java栈记录存储该线程中java方法调用的状态。(包括局部变量,参数,返回值,运算的中间结果。)
这些内存区域是私有的。任何线程都不能访问另一个线程的pc寄存器和java栈。
java栈由许多栈帧组成。一个栈帧包含一个java方法的调用的状态。
栈帧由3部分组成:局部变量区,操作数栈,帧数据区。
帧数据区保存常量池解析,正常方法返回,异常派发机制等信息。
当线程调用一个方法的时候,虚拟机压入一个新的栈桢到该线程的java栈中。
当方法返回时,这个栈桢被从java栈中弹出并抛弃。

 

分享到:
评论

相关推荐

    JVM+Java程序运行过程内存分配图解

    1、JVM 内存分配图解的 Visio 工程图。 2、直接下载使用、可自行调整和修改

    java实现内存动态分配

    每运行一个java程序会产生一个java进程,每个java进程可能包含一个或者多个线程,每一个Java进程对应唯一一个JVM实例,每一个JVM实例唯一对应一个堆,每一个线程有一个自己私有的栈。进程所创建的所有类的实例(也...

    Java 虚拟机学习笔记:Java 内存区域,垃圾收集,内存分配与回收策略,JVM 调优,文件结构,类加载机制,Java 程序

    它采用了“一次编写,到处运行”的原则,即一次编写的程序可以在不同的操作系统上运行,这得益于Java虚拟机(JVM)的存在。JVM是Java的核心组成部分,它可以将Java代码解释成特定平台上的机器码,从而实现跨平台运行...

    JVM-Java虚拟机

    资源概要:JVM基础知识;类加载子系统;运行时数据区;对象的创建流程与内存分配;...从广义上讲Java,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序都属于Java技术体系中的一员。

    Java知识,JVM面试资料

    JVM(Java虚拟机)是Java平台的核心组件之一,它是一个在计算机上运行Java字节码的虚拟机。JVM 提供了Java程序运行的环境和基础设施,并且具有高度的可移植性和跨平台性。 JVM 的主要功能包括字节码解释和执行、...

    Java进阶教程解密JVM视频教程

    JVM 是 Java 程序的运行环境,学习 JVM,方能了解 Java 程序是如何被执行的,为进一步深入底层原理乃至程序性能调优打好基础。通过学习这门课程,你将掌握:1. JVM 内存结构的组成、各部分功能作用,学会利用内存...

    Java内存分配全面浅析

    进入正题前首先要知道的是Java程序运行在JVM(JavaVirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的...

    深入理解JVM内存结构及运行原理全套视频加资料.txt

    包括JVM执行过程、虚拟机类加载机制、运行时数据区、GC、类加载器、内存分配与回收策略等,全套视频加资料高清无密码  第1讲 说在前面的话 免费 00:05:07  第2讲 整个部分要讲的内容说明 免费 00:06:58  第3讲...

    深入JVM内核 - 原理、诊断与优化

    介绍常用的JVM参数,包括内存分配、堆栈分配、虚拟机运行模式以及调试跟踪参数。 第四课 GC的算法和种类 引用计数 标记清除 复制算法 标记压缩 可触及性 本章是理论性较强的一章,主要介绍GC的基本算法和思想,本...

    深入理解Java虚拟机视频教程(jvm性能调优+内存模型+虚拟机原理)视频教程

    第29节对象在内存中的布局-对象的创建00:21:19分钟 | 第30节探究对象的结构00:13:47分钟 | 第31节深入理解对象的访问定位00:08:01分钟 | 第32节垃圾回收-概述00:06:20分钟 | 第33节垃圾回收-判断对象是否存活...

    JVM实战高手.zip

    而 Java 堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期才知道那些对象会创建,这部分内存的分配和回收都是动态的,垃圾...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 112 5.2.5 服务器JVM进程崩溃 / 113 5.3 实战:Eclipse运行速度调优 / 114 5.3.1 调优前的程序运行状态 / 114 5.3.2 升级JDK 1.6的性能变化及兼容问题 / 117 5.3.3 编译时间和类加载时间的优化 / 122 5.3.4 ...

    java虚拟机2021面试题第二季

    它会自动为Java应用程序分配内存,并在对象不再被引用时自动释放内存。 3. 字节码验证和安全性检查:JVM对字节码进行验证,以确保它符合Java语言规范,并且没有潜在的安全漏洞。 4. 类加载和链接:JVM通过类加载器...

    java面向对象之JVM创建及分配策略方法详解.docx

    在内存中又是怎么分配的呢? 正文 一、对象的创建方式 在Java中我们有几种方式可以创建一个新的对象呢?总共有以下几种方式: new关键字 反射 clone 反序列化 Unsafe.allocateInstance 为了便于说明和理解...

    java虚拟机2021面试题第三季

    它会自动为Java应用程序分配内存,并在对象不再被引用时自动释放内存。 3. 字节码验证和安全性检查:JVM对字节码进行验证,以确保它符合Java语言规范,并且没有潜在的安全漏洞。 4. 类加载和链接:JVM通过类加载器...

    java虚拟机2021面试题第一季

    它会自动为Java应用程序分配内存,并在对象不再被引用时自动释放内存。 3. 字节码验证和安全性检查:JVM对字节码进行验证,以确保它符合Java语言规范,并且没有潜在的安全漏洞。 4. 类加载和链接:JVM通过类加载器...

    Java程序员必备的Intellij插件 2018-11-12

    idea 配置文件 2018-11-12 ...VisualVM Launcher 运行java程序的时候启动visualvm,方便查看jvm的情况 比如堆内存大小的分配 GenerateAllSetter 一键生成一个对象的set方法并且赋予默认值 在对象字段多的时候非常方便

Global site tag (gtag.js) - Google Analytics