解析JVM内存区域组成
在方法(代码块)中定义一个变量时,java就在栈中为这个变量分配JVM内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的JVM内存空间;而在堆中分配的JVM内存由java虚拟机的自动垃圾回收器来管理。
JVM内存区域组成
JVM内存分四种:
1、栈区(stacksegment)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等,具体方法执行结束之后,系统自动释放JVM内存资源。Java中栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。
2、堆区(heapsegment)— 一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收。Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等。
3、静态区(datasegment)— 存放全局变量,静态变量和字符串常量,不释放。
4、代码区(codesegment)— 存放程序中方法的二进制代码,而且是多个对象共享一个代码空间区域。
在方法(代码块)中定义一个变量时,java就在栈中为这个变量分配JVM内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的JVM内存空间;在堆中分配的JVM内存由java虚拟机的自动垃圾回收器来管理,堆的优势是可以动态分配JVM内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配JVM内存的。缺点就是要在运行时动态分配JVM内存,存取速度较慢;栈的优势是存取速度比堆要快,缺点是存在栈中的数据大小与生存期必须是确定的无灵活性。
解析JVM内存区域组成相关推荐
- 《探索JVM内存区域》
一.为什么要了解JVM内存区域 二.结识JVM中的"内存"成员 1. 程序计数器(PC=Program Counter Register) 2. JVM栈(Java Virtual ...
- JVM之JVM内存区域与内存分配(转载)
2019独角兽企业重金招聘Python工程师标准>>> 先来看看JVM运行时候的内存区域 大多数 JVM 将内存区域划分为 Method Area(Non-Heap)(方法区),He ...
- JVM 内存区域大小参数设置
需要提前了解的知识点: 1. JVM内存模型 2. JVM垃圾回收算法 下图是JVM内存区域划分的逻辑图 从图中我们大概了解JVM相关的内存区域. JVM内存包括区域 Heap(堆区) New Gen ...
- 深入理解JVM内存区域与内存分配
前言:这是一篇关于JVM内存区域的文章,由网上一些有关这方面的文章和<深入理解Java虚拟机>整理而来,所以会有些类同的地方,也不能保证我自己写的比其他网上的和书本上的要好,也不可能会这样 ...
- 走进JVM【二】理解JVM内存区域
引言 对于C++程序员,内存分配与回收的处理一直是令人头疼的问题.Java由于自身的自动内存管理机制,使得管理内存变得非常轻松,不容易出现内存泄漏,溢出的问题. 不容易不代表不会出现问题,一旦内存泄漏 ...
- Java虚拟机------JVM内存区域
JVM内存区域运行时数据区域分为两种: JVM内存区域 运行时数据区域分为两种: 线程隔离的数据区: 程序计数器 Java虚拟机栈 本地方法栈 所有线程程共享的数据区: Java堆 方法区 JVM 内 ...
- mfc强制局部区域刷新_简述JVM内存区域划分
我们在Java编程时少不了程序优化,而程序优化的前提是知道JVM的内存是如何划分的,那么我们今天来大体了解下. 在看JVM内存区域划分之前,先来看一下Java程序具体执行的过程: 如上图所示,首先Ja ...
- 深入理解JVM之JVM内存区域与内存分配
在学习jvm的内存分配的时候,看到的这篇博客,该博客对jvm的内存分配总结的很好,同时也利用jvm的内存模型解释了java程序中有关参数传递的问题. 博客出处: http://www.cnblogs. ...
- JVM内存区域(Java内存区域)、JVM垃圾回收机制(GC)初探
一.JVM内存区域(Java内存区域) 首先区分一下JVM内存区域(Java内存区域)和Java内存模型(JMM)的概念.Java线程之间的通信采用的是共享内存模型,这里提到的共享内存模型指的就是Ja ...
最新文章
- 独家 | 如何让情绪智力驱动创新?
- hadoop学习之一
- 搜狗输入法:候选词带符号设置方法。正常打字打出符号,颜文字。
- java 定义多个变量_学了Java才搞懂JMeter测试计划
- 页面常见跳转的方法和选择
- mfc oracle数据库编程,testmfc - 源码下载|数据库系统|Oracle数据库|源代码 - 源码中国...
- C++ - 操作运算符
- 软件工程 2016.7.3 日报
- 初级程序员面试经典题目(大串烧 含答案)
- 计算机自动设置开机,怎么设置电脑自动开机
- java 控制层和业务层,控制层、业务层和数据访问层
- 记录金盾专用播放器加密视频提取工具逆向分析过程二
- 【备忘】【No5】微信公众平台开发入门到实战开发视频教程(Java+PHP)
- 0基础24岁女硕士生,想转行做月薪30k的测试开发,需要从什么开始学习?
- 安得猛士兮守四方——国产EDA公司盘点
- EXCEL数据之美:带你走进数据可视化
- css背景图重复怎们弄,CSS如何实现背景图像重复效果
- Apollo + Springboot 整合(多环境版)
- android 自动签名工具下载,安卓批量签名工具使用说明
- 和老板比,员工弱爆了