.内存的不同形态

物理内存

虚拟内存

.内存的使用形式

内核空间

用户空间

.java虚拟机运行时数据划分

PC寄存器:保存当前程序运行时的内存地址.

Java栈:总是和线程关联,每个线程拥有一个java栈,每个栈会有多个栈帧,栈帧与方法关联起来,每运行一个方法就会创建一个栈帧.

java堆:存储java对象的地方

JVM方法区:存储类结构信息,存储信息相对比较稳定,很少会被GC回收器回收.

运行时常量池:Runtime Constant Pool代表运行每个class文件中的常量表(编译期的数字常量,方法或者域引用)

本地方法栈:为Jvm运行Native方法准备的空间,因为很多本地方法都是由C语言实现的,所以又叫做C栈.

.内存分配策略

4.1操作系统内存分配策略

静态内存分配:程序编译前就确定了每个数据在运行时的存储空间需求.

栈内存分配:也称动态内存分配

堆内存分配:最自由的一种内存分配.

4.2Java内存分配策略(堆用来存储对象,栈用来执行程序)

栈内存分配

创建一个线程,就会创建一个java栈,一个线程的方法的调用和返回对应java栈的压栈和出栈.栈中主要存放一些基本类型的数据和对象句柄(引用).

优点:存取速度比较快,仅次于寄存器,栈数据是共享的.

缺点:栈中的数据大小和生命周期都是确定的,也导致缺乏其灵活性

堆内存分配

java堆是一个运行时数据区,每个实例对应一个堆.堆是由垃圾回收机制来负责的.

优点:堆的优势就是可以动态的分配内存大小

缺点:由于要在运行时分配内存,所以存取速度较慢.

JVM内存管理基础概念的更多相关文章

  1. JVM内存管理基础

     JVM 虚拟机架构(图片来源: 浅析Java虚拟机结构与机制) JVM 内存区域 JVM会将Java进程所管理的内存划分为若干不同的数据区域. 这些区域有各自的用途.创建/销毁时间: (图片来源:  ...

  2. JVM内存管理基本概念

    java中是否存在内存泄露? 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连:其次,这些对象是无用的,即程序以后不会 ...

  3. Java之美[从菜鸟到高手演变]之JVM内存管理及垃圾回收

    很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确 ...

  4. JVM内存管理及垃圾回收

    一.JVM内存的构 Java虚拟机会将内存分为几个不同的管理区,这些区域各自有各自的用途,根据不同的特点,承担不同的任务以及在垃圾回收时运用不同的算法.总体分为下面几个部分: 程序计数器(Progra ...

  5. JVM 内存分配模型概念和java中各种对象的存储

    JVM 内存分配模型概念 --在工作中可能用到的机会不多,有个概念的了解 --此文是转载某位读者,应该是在阅读了<深入理解Java虚拟机JVM高级特性与最佳实践> 一书后,总结所得.写的不 ...

  6. JVM内存管理及垃圾回收【转】

    很多Java面试的时候,都会问到有关Java垃圾回收的问题,提到垃圾回收肯定要涉及到JVM内存管理机制,Java语言的执行效率一直被C.C++程序员所嘲笑,其实,事实就是这样,Java在执行效率方面确 ...

  7. 你应该这样理解JVM内存管理

    在进行Java程序设计时,一般不涉及内存的分配和内存回收的相关代码,此处引用一句话: Java和C++之间存在一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外的人想进去,墙里面的人想出来 ,个人从这 ...

  8. 一文洞悉JVM内存管理机制

    前言 本文已经收录到我的Github个人博客,欢迎大佬们光临寒舍: 我的GIthub博客 学习导图: 一.为什么要学习内存管理? Java与C++之间有一堵由内存动态分配和垃圾回收机制所围成的高墙,墙 ...

  9. java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4)

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来. 概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项 ...

随机推荐

  1. 数据库几种连接方式的(左右union all)

    A表 id  name 1 bai 2 zhang 3 li B表 a_id score 1 80 2 70 1 30 左连接: select A.* ,B.* from A a left outer ...

  2. Quartz实现定时功能

    ---------------------------------博主讲废话 在自己实现爬取某个网站的信息后,发现,如果要自己每次把程序跑一遍不太现实(麻烦),所以有没有什么可以实现 定时的功能,只要 ...

  3. Delphi线程的初级应用

    viewRadio_th线程函数在form外生命全局变量.函数内相应的局部变量可以接收全局变量的赋值进行操作.query等可以自行创建进行查询.这样结果不会改变. //下面是后台发送字幕的线程函数应用 ...

  4. python获取当前目录路径和上级路径

    在使用python的时候总会遇到路径切换的使用情况,如想从文件夹test下的test.py调用data文件夹下的data.txt文件: . └── folder ├── data │ └── data ...

  5. 我的Android进阶之旅------>Android中Dialog系统样式讲解

    今天在维护公司的一个APP的时候,有如下场景. 弹出一个AlertDialog的时候,在系统语言是中文的时候,如下所示: 弹出一个AlertDialog的时候,在系统语言是English的时候,如下所 ...

  6. openssl之EVP系列之7---信息摘要算法结构概述

    openssl之EVP系列之7---信息摘要算法结构概述     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作者:Dragon ...

  7. Python基础-set集合

    1.集合的创建 s = set('fansik and fanjinbao') print(s) 打印结果(去掉了重复的字符):{'k', 'd', 'f', 'n', ' ', 'j', 'i', ...

  8. 剑指offer 面试49题

    面试49题: 题:丑数 题目:把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N ...

  9. cqlsh script

    1.time类型 cqlsh> COPY my_keyspace.typetest from STDIN;Using 1 child processes Starting copy of my_ ...

  10. 最小化CentOS6.7(64bit)---安装mysql5.5、jdk、tomcat

    ********mysql******** ------------------------------------------------------------------------------ ...