java-内存结构学习

Java程序在运行时,需要在内存中的分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

1. 栈内存

用于存储局部变量,当数据使用完,所占空间会自动释放。

2. 堆内存

数组和对象,通过new建立的实例都存放在堆内存中。

每一个实体都有内存地址值

实体中的变量都有默认初始化值

实体不在被使用,会在不确定的时间内被垃圾回收器回收

3. 方法区,本地方法区,寄存器

4.五片区域:

寄存器,栈内存,堆内存,方法区,本地方法区。

栈内存:存储的都是局部变量,一旦使用完,立刻被释放。

堆内存:存储的是实体(对象)。

1,堆内存中的每一个实体都有自己的内存地址值。

2,堆内存中每一个变量都有默认初始化值,不同类型初始化值不同。

int 0,double 0.0 char \u0000,boolean false.

3,当实体被视为垃圾时,会在不定时的时间内,被垃圾回收。

时间: 2024-12-14 18:10:49

java-内存结构学习的相关文章

Java内存结构和数据类型

Java内存结构 内存就是暂时对数据的一个存储,他的存储速度非常的快,但是他是暂时的存储,从开机时开始存储,掉电或关机之后数据全部丢失.内存的生命周期就是开机和关机,开机的时候开始计算,关机什么都没有了.优点存储速度快,缺点容易坏掉,如果开机的时候,一点反映都没有,屏幕不亮键盘鼠标不亮,这种情况下一般都是内存条有问题.机器蓝屏,指令错误都是内存引起的. 程序的数据都是存储在内存里面,不存储在硬盘上因为硬盘不安全,可以读取数据.但是内存就不一样,内存他不允许去读取内存数据,并且速度很快所以我们的程

java 内存结构

一.JVM是Java Virtual Machine(Java虚拟机)的缩写,不同平台上的JVM都是不同的,但向编译器提供相同的接口,编译器面向JVM生成JVM可以理解的.class字节码文件,对应平台的JVM对.class文件进行解释执行生成与该平台对应的机器码,JVM屏蔽了与具体操作系统平台相关的信息,在java跨平台实现中起到转换器的作用. 二.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. 1. 指令集 ............ 2. 寄存器 用

java 内存泄露 学习

1.什么事内存泄露 内存泄露就是对象不用了,但是无法回收该对象占用的内存. 2.java不是有垃圾回收机制,咋还会发生内存泄露呢? java的垃圾回收机制就是把无用的对象(GC roots可达与否)用的内存回收,但是垃圾回收不是万能的,在一些场合会出现内存泄露, 长对象持有短对象的引用, 1.静态集合类 1 Static Vector v = new Vector(10); 2 for (int i = 1; i<100; i++) 3 { 4 Object o = new Object();

Java内存结构、类的初始化、及对象构造过程

概述 网上关于该题目的文章已经很多,我觉得把它们几个关联起来讲可能更好理解一下.与其它语言一样,它在执行我们写的程序前要先分配内存空间,以便于存放代码.数据:程序的执行过程其实依然是代码的执行及数据的读写过程:除了在执行我们写的显式的可见代码外,Jvm还会自动帮我们帮一些事,包括类的加载.初始化.GC等,这些也不特殊.以下分别来说下这些概念. Java内存结构.类的初始化.及对象构造过程

对Java内存结构的一点思考和实践

在一些高并发的程序,或者一些大量使用内存来进行计算的程序,有时候常常会遇到一些这样的问题:程序刚开始运行挺快的,后来就运行缓慢下来了,甚至于到了一定时间还会出现OOM或者StackOverFlow等错误.要理解这些错误产生的根源,就要了解JVM是何如划分.管理.回收内存的,本篇博客将从博主对JVM的认识以及实际经验角度出发,聊聊这些话题. JVM内存结构 一旦涉足JVM内存结构,恐怕会冒出大量的术语:新生代?老生代?永久代?等等,我们暂且抛开这些名称,基于我们的JAVA基础,它应该是什么样子的呢

JVM运行时内存结构学习

学习JVM运行模型比较重要,先看一幅图片: 运行时数据区(内存结构) :  1.方法区(Method Area)类的所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在这里定义.简单来说,所有定义的方法的信息都保存在该区域,静态变量+常量+类信息(构造方法/接口定义)+运行时常量池都存在方法区中, 虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是为了和Java的堆区分开 . 2.堆(Heap)虚拟机启动时自动分配创建,用于

JVM—Java内存结构

JAVA虚拟机内存 JAVA虚拟机内存,也叫JAVA内存,可以理解为Java虚拟机运行时数据区. JVM内存结构 包括: 线程共享的方法区 和 堆, 以及每个线程私有的 JAVA栈,本地方法栈 和 PC计数器(程序计数器). JAVA堆 堆,是JAVA虚拟机中所管理的内存中最大的一块,此内存区域的唯一目的就是存放对象实例以及数组. 所有通过new创建的对象的内存都在堆中分配,其大小可以通过-Xmx和-Xms来控制. JAVA堆与垃圾回收的渊源 JAVA堆也是垃圾回收器管理的主要区域,因此也被称为

day03 java内存结构以及重载

函数重载(overload)概念: 在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数 类型即可. 函数的特点: 与返回类型无关,只与参数列表有关. 数组概念: 同一种类型数据的集合,其实数组就是一个容器.格式: 元素类型[] 数组名=new 元素类型 内存结构java程序在运行时,需要在内存中的分配空间.为了提高运算效率,有队空间进行了不 同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式. 栈内存:用于存储局部变量,当变量使用完,所占空间自动释放. 堆内存:数

2016021801 - Java内存区域学习笔记

根据<深入理解java虚拟机>学习归纳整理学习笔记 程序计数器 用途:当前线程的字节码文件的行号指示器.(当前机场负责控制飞机降落的空管员:当前线程表示当前机场, 所执行的字节码等同于被等待允许降落的飞机,行号指示器好比下达允许降落指令的空管员) 线程私有(每个机场都有属于自己的空管员,不同机场的空管员相互独立,互不影响) 类比:某个机场(线程)负责控制航班降落(被执行的字节码)的空管员(行号指示器): 每个机场都有属于自己的空管员: 异常:没有.(机场有没有飞机降落,飞机降落过程发生故障,和

Java虚拟机系列之Java内存结构简介

本文我们将讲解Java虚拟机中各个区域以及各个区域的作用. 一.程序计数器什么是程序计数器,有什么作用?程序技术器是一块比较小的内存区域,主要当做是线程中所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一个执行的字节码命令,分支.循环.跳转等基础功能都是依赖这个程序计数器来完成. 有什么特点?Java虚拟机中的多线程是通过线程轮流切换分配处理器执行时间的方式来实现的,所以为了线程切换后能恢复到正确的执行位置,每条线程都需要一个独立的程序计数器,各条线程之间计数器互