黎梨苗 刘欣
摘 要:Java程序中,java虚拟机将内存分成了两大部分,每部分的功能不同,这与我们通常所说的内存有着一定的区别。那么,java虚拟机是如何进行内存的分功的呢?本文将结合简单实例对java程序中的内存进行详细解析。
關键词:java虚拟机内存栈内存堆内存
Java程序中的内存分为两大部分:一部分叫做栈(Stack)内存,另一部分叫堆(heap)内存。栈内存用来存放基本数据类型和引用数据,基本数据类型如int,short,byte,float等;引用数据类型如类,接口,注解等。堆内存用来存放类中的实例化对象即用new关键字创建的对象,如 new animal(),这个数据就存放堆内存里。通过一个简单实例对两部分内存做详细分析。[1]
一、简单实例
class Student{
int age;String name;
Student (int age,String name){
this age=age;String name=name;}
void listening(){
System.out.print(“学生正在听课”);}
public static void main(String[] args){
Student stu1=new Student(8,”张三”);
Student stu1=new Student(12,”李四”);
stu1.listening();}}
二、实例内存分配解析
上述实例中,定义了两个基本数据类型的变量age与name;一个一般方法;在主函数内创建了两个对象。内存分配解析如下:
栈内存用来存放基本数据类型的变量及对象的引用地址,在实例中的基本数据类型为int age、String name; 对象的引用为 Student stu1、Student stu2.而堆内存用来存放new出来的对象即存放上例中的new Student(8,”张三”)与new Student(12,”李四”),如图中所示。另外,通常在堆内存又细分出一块内存空间叫常量池,用来存放不常改变的量,如static修饰的量,final修饰的量,字符串常量及方法,显然,常量池里所存放的内容具有所有实例共享的特征。实例内存分配如图1所示。[2]
三、内存运行机制
在讲内存运行机制之前,我们首先必须了解JVM即Java虚拟机,Java程序是在JVM上运行的,它是连接操作系统与Java程序之间的纽带,Java程序有个特点“一次编译,到处运行”,这正是JVM所起的作用,体现了Java的平台无关性,可见,JVM在Java程序运行中起着至关重要的作用,程序的内存分配都是在JVM中进行。……