Jvm的内存布局和垃圾回收机制

kebukeyi 等级 746 0 0

内存布局

运行时数据区

Jvm的内存布局和垃圾回收机制

  1. 程序计数器:用来控制代码运行行数。
  2. Java 虚拟机栈:每个线程运行方法(A调用B)时,先把A方法放入到栈底,然后加载B方法,B方法放在A方法栈帧上,执行完B方法,弹出栈,随后A弹出栈。对应着一个栈帧出栈入栈的过程。
  3. Java堆:是Java虚拟机管理的最大的内存区,是所有线程可共享的,对象实例在这里被分配内存,是垃圾收集器(GC)管理的主要区域。
  4. 方法区:保存已被虚拟机加载的类信息(实现的接口、继承的父类等等)、常量、静态变量即时编译器编译后的代码,运行时常量池。
  5. 直接内存:不是虚拟机运行时数据区的一部分,也不是虚拟机规范中定义的内存区域。大部分是Java的io操作使用。
  6. 内存布局变化 Jvm的内存布局和垃圾回收机制

垃圾回收机制

1. 标记算法,容易出现碎片。

Jvm的内存布局和垃圾回收机制

2. 复制算法,由于每次只用一半,总是有一半的内存空间浪费。

Jvm的内存布局和垃圾回收机制

3. 标记-整理算法,存在内存块的移动,对性能有一些影响。

Jvm的内存布局和垃圾回收机制

4.分代收集,大部分使用完后的对象都可以回收,新生代采用复制算法,年老代采用标记清除算法,回收线程可以是多个,

Jvm的内存布局和垃圾回收机制

收藏
评论区

相关推荐

Java后端开发三年的程序员竟然还被JVM难住!果然JVM面试是有套路的!
前言JVM是面试中必问的部分,本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。先上图:image1、JVM基本概念1.1、JVM是什么JVM 的全称是 「Java Virtual Machine」,也就是我们耳熟能详的 Java 虚拟机。JVM具备着计算机的基本运算方式,它主要负责把 Java 程序生成的
Java里面的十万个为什么
Java里面的十万个为什么 1.不是说 JVM 是运行 Java 程序的虚拟机吗?那 JRE 和 JVM 的关系是怎么样的呢?简单地说,JRE 包含 JVM 。JVM 是运行 Java 程序的核心虚拟机,而运行 Java 程序不仅需要核心虚拟机,还需要其他的类加载器,字节码校验器以及大量的基础类库。JRE 除包含 JVM 之外,还包含运行 Java 程序的其
JVM内存逻辑结构
JVM(Java Virtual Machine),即Java虚拟机。JVM是一种用于计算机设备的规范,它是虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能实现的。因此,能在JVM中执行的并不一定是Java语言的编译后字节码,也可以是其它语言,比如Jyphon、JRuby以及Groovy等。 下图为Java程序员最为关注JVM的内存模
Java 基本功 (基础概念与常识)
### 主要涉及知识点: JVM JDK 和 JRE 最详细通俗的解答Oracle JDK 和 OpenJDK 的对比Java 和 C++的区别?什么是 Java 程序的主类 应用程序和小程序的主类有何不同?Java 应用程序与小程序之间有哪些差别?import java 和 javax 有什么区别?为什么说 Java 语言“编译与解释并存”?
java 多进程
多进程的概念 * **一个JVM进程对应一个JAVA程序** * Java编写程序都运行在在Java虚拟机(JVM)中, * **在JVM的内部,程序的多任务是通过线程来实现的** * 每用java命令启动一个java应用程序,就会启动一个JVM进程。 * 在同一个JVM进程中,有且只有一个进程,就是它自己。
java基础知识随身记
2018年11月12日20:51:35 一、基础知识: 1、JVM、JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性。   java语言是跨平台,jvm不是跨平台的。 JRE(Java Runtime Environment):java的运行环境,包括jvm+java的核心类
JVM入门到放弃之基本概念
### 1\. 基本概念 jvm 是可运行Java代码的假想计算机,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 jvm 是运行在操作系统之上的,屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在 jvm 上运行的字节码,就可以在多种平台上不加修改地运行。 Java 语言的一个非常重要的特点就是与平台的无关性(
JVM内存区域划分
JVM内存区域划分 ========= 一、JVM运行时数据区划分 ------------- * * * 根据《Java虚拟机规范》JVM会把它管理的内存划分为若干个不同的数据区域,如下图所示:**方法区、堆、栈(虚拟机栈、本地方法栈)、程序计数器**。线程私有的意思是指,JVM每遇到一个新的线程就会为他们分配栈和程序计数器。 ![](https
JVM内存模型和类加载机制
### JVM内存模型 Java代码是运行在Java虚拟机(JVM)上的,Java虚拟机通过解释执行(解释器)或编译执行(编译器)来完成。 Java内存模型分为5个部分:方法区(Method Area),Java堆(Heap),Java栈(VM Stack),本地方法栈(Native Method Stack),程序计数器(PC 寄存器) ![](ht
JVM内幕:Java虚拟机详解
用于学习的 JVM DIY 项目,[https://github.com/huangwei2013/jjvm](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fgithub.com%2Fhuangwei2013%2Fjjvm) \---------------------- 这篇文章解释
JVM的启动流程
JVM工作原理和特点主要是指操作系统装入JVM,是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类。 ![](https://oscimg.oschina.net
JVM知识(一):基础原理
学过java知识和技术人,都应该听说过jvm,jvm一直是java知识里面晋级阶段的重要部分,如果想要在java技术领域更深入一步,jvm是必须需要明白的知识点。 本篇来讲解jvm的基础原理,先来熟悉一下大致的流程: **JVM运行流程:**   我们都知道java一直宣传的口号:一次编译,到处运行。也是它的跨平台性。这点的具体实现如下: ![](h
JVM运行机制(非原创)
文章大纲 ---- 1. JVM基本概念 2. JVM的体系结构 3. JVM启动流程 一、JVM基本概念 --------- 1. Java虚拟机(JVM)是可运行Java代码的假想计算机 2. Java虚拟机包括类加载器、一组寄存器、方法区、一个垃圾回收堆、直接内存、一个栈、和一个存储方法域、PC寄存器等 3. Java编译、运行流程如
JVM(一)史上最佳入门指南
提到Java虚拟机(JVM),可能大部分人的第一印象是“难”,但当让我们真正走入“JVM世界”的时候,会发现其实问题并不像我们想象中的那么复杂。唯一真正令我们恐惧的,其实是恐惧本身。而作为整个JVM系列的首篇,本文将带你解除刚开始学习JVM时的种种疑惑。比如:什么是JVM?为什么学习JVM?怎么有效的学习JVM?带着以上的这些问题,让我们一起走入JVM的世界
Tomcat中JVM内存溢出及合理配置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。 **一、Java JVM内存介绍** JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,

热门文章

最新文章