java内存管理
来源:互联网 发布:mac photoshop破解 编辑:程序博客网 时间:2024/05/16 09:22
首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!
一、内存管理原理:
在java中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交互!这就保证了java程序的平台无关性!下面我们从程序运行前,程序运行中、程序运行内存溢出三个阶段来说一下内存管理原理!
1、程序运行前:JVM向操作系统请求一定的内存空间,称为初始内存空间!程序执行过程中所需的内存都是由java虚拟机从这片内存空间中划分的。
2、程序运行中:java程序一直向java虚拟机申请内存,当程序所需要的内存空间超出初始内存空间时,java虚拟机会再次向操作系统申请更多的内存供程序使用!
3、内存溢出:程序接着运行,当java虚拟机已申请的内存达到了规定的最大内存空间,但程序还需要更多的内存,这时会出现内存溢出的错误!
至此可以看出,Java 程序所使用的内存是由 Java 虚拟机进行管理、分配的。Java 虚拟机规定了 Java 程序的初始内存空间和最大内存空间,开发者只需要关心 Java 虚拟机是如何管理内存空间的,而不用关心某一种操作系统是如何管理内存的。
二、 RUNTIME 类的使用:
Java 给我们提供了Runtime 类得到JVM 内存的信息
方法名称 参数作用 返回值 getRuntime 无 获取Runtime 对象 Runtime 对象 totalMemory 无 获取JVM 分配给程序的内存数量 long:内存数量 freeMemory 无 获取当前可用的内存数量 long:内存数量 maxMemory 无 获取JVM 可以申请到的最大内存数量 long:内存数量
三、内存空间逻辑划分:
JVM 会把申请的内存从逻辑上划分为三个区域,即:方法区、堆与栈。
方法区:方法区默认最大容量为64M,Java虚拟机会将加载的java类存入方法区,保存类的结构(属性与方法),类静态成员等内容。
堆:默认最大容量为64M,堆存放对象持有的数据,同时保持对原类的引用。可以简单的理解为对象属性的值保存在堆中,对象调用的方法保存在方法区。
栈:栈默认最大容量为1M,在程序运行时,每当遇到方法调用时,Java虚拟机就会在栈中划分一块内存称为栈帧(Stack frame),栈帧中的内存供局部变量(包括基本类型与引用类型)使用,当方法调用结束后,Java虚拟机会收回此栈帧占用的内存。
0 0
- 【Java】Java内存管理
- java内存管理-堆栈内存
- java内存管理-内存回收
- JAVA内存管理
- java内存管理
- JAVA 内存管理
- JAVA 内存管理
- java得内存管理
- Java内存管理思想
- Java内存管理思想
- Java内存管理思想
- java内存管理
- Java内存管理
- Java内存管理概述
- Java内存管理
- Java内存管理
- Java内存管理
- Java内存管理
- Euler 的面(Face,F)、顶(Vertex,V)、棱(Edge,E)公式
- 2016-8月-魔鬼计划
- selenium借用AutoIt 实现上传文件
- hibernate 3.1使用(import org.hibernate.cfg.AnnotationConfiguration;)出错
- 移动开发,touchstart轮播图,移动端拖拽应用
- java内存管理
- android创建快捷方式
- CI框架之视频上传
- PHP中单引号和双引号的区别
- C++(一)
- muduo:线程池
- 非静态类中为什不能定义静态方法
- (OK)(www.nrl.navy.mil) OSPF MANET Designated Routers (OSPF-MDR) Implementation
- 自定义类归档