JVM内存管理基础概念
.内存的不同形态
物理内存
虚拟内存
.内存的使用形式
内核空间
用户空间
.java虚拟机运行时数据划分
PC寄存器:保存当前程序运行时的内存地址.
Java栈:总是和线程关联,每个线程拥有一个java栈,每个栈会有多个栈帧,栈帧与方法关联起来,每运行一个方法就会创建一个栈帧.
java堆:存储java对象的地方
JVM方法区:存储类结构信息,存储信息相对比较稳定,很少会被GC回收器回收.
运行时常量池:Runtime Constant Pool代表运行每个class文件中的常量表(编译期的数字常量,方法或者域引用)
本地方法栈:为Jvm运行Native方法准备的空间,因为很多本地方法都是由C语言实现的,所以又叫做C栈.
.内存分配策略
4.1操作系统内存分配策略
静态内存分配:程序编译前就确定了每个数据在运行时的存储空间需求.
栈内存分配:也称动态内存分配
堆内存分配:最自由的一种内存分配.
4.2Java内存分配策略(堆用来存储对象,栈用来执行程序)
栈内存分配
创建一个线程,就会创建一个java栈,一个线程的方法的调用和返回对应java栈的压栈和出栈.栈中主要存放一些基本类型的数据和对象句柄(引用).
优点:存取速度比较快,仅次于寄存器,栈数据是共享的.
缺点:栈中的数据大小和生命周期都是确定的,也导致缺乏其灵活性
堆内存分配
java堆是一个运行时数据区,每个实例对应一个堆.堆是由垃圾回收机制来负责的.
优点:堆的优势就是可以动态的分配内存大小
缺点:由于要在运行时分配内存,所以存取速度较慢.
JVM内存管理基础概念的更多相关文章
- JVM内存管理基础
JVM 虚拟机架构(图片来源: 浅析Java虚拟机结构与机制) JVM 内存区域 JVM会将Java进程所管理的内存划分为若干不同的数据区域. 这些区域有各自的用途.创建/销毁时间: (图片来源: ...
- JVM内存管理基本概念
java中是否存在内存泄露? 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连:其次,这些对象是无用的,即程序以后不会 ...
- Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收
很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确 ...
- JVM内存管理及垃圾回收
一.JVM内存的构 Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法.总体分为下面几个部分: 程序计数器(Progra ...
- JVM 内存分配模型概念和java中各种对象的存储
JVM 内存分配模型概念 --在工作中可能用到的机会不多,有个概念的了解 --此文是转载某位读者,应该是在阅读了<深入理解Java虚拟机JVM高级特性与最佳实践> 一书后,总结所得.写的不 ...
- JVM内存管理及垃圾回收【转】
很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确 ...
- 你应该这样理解JVM内存管理
在进行Java程序设计时,一般不涉及内存的分配和内存回收的相关代码,此处引用一句话: Java和C++之间存在一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里面的人想出来 ,个人从这 ...
- 一文洞悉JVM内存管理机制
前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习导图: 一.为什么要学习内存管理? Java与C++之间有一堵由内存动态分配和垃圾回收机制所围成的高墙,墙 ...
- java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4)
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项 ...
随机推荐
- IDEA : Git Pull Failed 解决(IDEA中使用stash功能)
一.问题: 本地要commit代码,commit之前需pull代码,但pull提示冲突.如下 Git Pull Failed Your local changes would be overwritt ...
- JS HTML DOM---Document对象
Document 对象 当浏览器载入 HTML 文档, 它就会成为 document 对象. document 对象是HTML文档的根节点与所有其他节点(元素节点,文本节点,属性节点, 注释节点). ...
- iOS 多线程之 GCD 的基本使用
什么是GCD 全称Grand Central Dispatch 中暑调度器 纯C语言 提供了很多强大的函数 GCD 的优势 GCD是苹果公司为多核的并行运算提出的解决方案 GCD会自动利用更多的CPU ...
- [note]克鲁斯卡尔重构树
克鲁斯卡尔重构树 又叫并查集重构树 大概在NOI2018之前还是黑科技 现在?烂大街了 主要是针对图上的对边有限制的一类问题 比如每次询问一个点u不能经过边权大于w的边能走到的第k大点权是多少 也就是 ...
- EChars文档
http://echarts.baidu.com/echarts2/doc/doc.html#SeriesMap http://echarts.baidu.com/option.html
- C++学习之旅get、getline的使用方法
C++学习之旅get.getline的使用方法 面向行的输入:cin.getline(). 该函数读取整行.它使用通过回车键输入的换行符来确定输入结尾.要调用这样的方法,能够使用cin.getline ...
- boost之string_algo
string_algo是用于处理字符串查找,替换,转换等一系列的字符串算法 前缀i:表示大小写不敏感 后缀_copy:表示不变动输入,返回处理结果的拷贝 后缀_if:表示算法需要一个判断式的谓词函数对 ...
- C#对excel的操作
本文先描述如何用c#连接.操作excel文件. 项目中需要引入的DLL文件为Interop.Excel.Interop.Microsoft.Office.Core.Interop.Office等. 操 ...
- iOS NSSet 学习 “无序数组” & 去重 案例
“NSSet,NSMutableSet,和NSCountedSet类声明编程接口对象的无序集合(散列存储:在内存中的存储位置不连续). 而NSArray,NSDictionary类声明编程接口对象的有 ...
- css系列(4)简介
本节用来简单介绍css. (1)css: CSS 指层叠样式表 (Cascading Style Sheets): 功能以及作用:1.样式定义如何显示 HTML 元素; 2.样式通常存 ...