Java中的内存分配概念是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联提供成都网站建设、成都网站制作、网页设计,成都品牌网站建设,广告投放等致力于企业网站建设与公司网站制作,十年的网站开发和建站经验,助力企业信息化建设,成功案例突破成百上千家,是您实现网站建设的好选择.
Java程序运行在JVM(JavaVirtualMachine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性。
寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。
栈:保存局部变量的值:包括1.基本数据类型的值。2.保存类的实例,即堆区对象的引用(指针)。3.保存加载方法时的帧。
堆:用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类拥有各自的成员变量,存储在堆中的不同位置,但是同一个类不同实例的他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。
常量池:JVM为每个加载的类型维护一个常量池,常量池是这个类型用到的常量的集合。包括直接常量(基本类型,String)和对其他类型、方法、字段的符号引用(1)。池中的数据和数组一样通过索引访问。由于常量池包含了一个类型所有的对其他类型、方法、字段的符号引用,所以常量池在Java的动态链接中起了核心作用。常量池存在于方法区中,而方法区存在于堆中。
描述了Java内存分配,接下来通过实例详细讲解Java程序是如何在内存中运行的
预备知识:
1.一个Java文件,只要有main入口方法,我们就认为这是一个Java程序,可以单独编译运行。
2.无论是普通类型的变量还是引用类型的变量(俗称实例),都可以作为局部变量,他们都可以出现在栈中。只不过普通类型的变量在栈中直接保存它所对应的值,而引用类型的变量保存的是一个指向堆区的指针,通过这个指针,就可以找到这个实例在堆区对应的对象。因此,普通类型变量只在栈区占用一块内存,而引用类型变量要在栈区和堆区各占一块内存。
3.在方法的参数传递中,基本数据类型,String类是按值传递,即拷贝了一个副本!引用数据类型是按引用传递,即把栈中的地址传入!
看完上述内容,你们掌握Java中的内存分配概念是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
网页标题:Java中的内存分配概念是什么
当前URL:http://scpingwu.com/article/ijpgdg.html