Jvm(java)内存存储简单区分。

原创 2015年11月21日 11:00:52

JVM:无可厚非是控制我们java内存的虚拟机器.

生命周期:Java程序开始到结束;

(阅读过深入理解JVM)自己画的一个大致JVM加载与内存分配图与大致执行图;



运行时候所有new出来的实例或数组都是放在同一个堆里面的,因此只会有一个堆空间,大家一起共享。又因为一个JAVA程序占有一个虚拟机所以基本是没有影响的。但是由于共享,你所以线程共同操作一个堆数据,就会产生堆数据同步问题了。

存储:对象实例。


是由许多栈帧组成,一个栈帧包含一个Java方法调用的状态,线程调用一个方法压入一个栈,方法执行完,弹出。并且线程之间是不能够相互访问之间的pc寄存器(程序计数器)与java栈的内存数据的。

存储:局部变量。


方法区

一个java文件被编译成为class文件,jvm解析出来的类文件的一堆相关信息都是存放在方法区的。(具体怎么存储就要看虚拟机实现者来定义了),

存储:类型信息(全名,接口还是类型,修饰符,父类名...)

         常量池(直接常量(String ,Integer..)与引用类型常量);

         方法信息(返回类型,修饰符,参数顺序,类型....相关方法的信息)

          类(静态)变量:由于是对象共享的,所以加载时候就已经导入内存方法区中。实例对象时候直接引用。

          


程序计数器:

每个线程都有它自己的程序计数器。当线程执行某个JAVA方法时候,它的内容总是下一条"地址",当然也可以是执行本地方法,那么此时程序计数器 下一条地址是“undefined”;


版权声明:欢迎你来转载,不过请带个此Blog链接!

JVM内存分配以及存储总结

最近看了一下JVM的内存分配,还是比较复杂的。这里做个总结,首先一个common sense就是操作系统会为每个java进程实例化一个jvm实例。jvm然后再来运行java程序,具体的过程就不多说了,...
  • qingtiantianqing
  • qingtiantianqing
  • 2016年04月17日 13:12
  • 1299

JVM中的内存分配(对象的存储)

Jvm中的内存分为:寄存器、栈、堆、常量池、代码段、数据段 寄存器:不可控,也是未知 栈:保存局部变量。而局部变量又包括基本类型和引用类型。对于基本类型来说其中就是保存其“值”,而对于引用类型的来说,...
  • u010378878
  • u010378878
  • 2016年09月01日 02:13
  • 770

【JVM】实例分析Java代码运行时内存布局

Java内存模型对于我们实际分析Java代码有着无可替代的作用。用一个小例子来分析Java代码运行时,内存是如何布局的。 package test01; //日期类 class BirthDate {...
  • wangyy130
  • wangyy130
  • 2016年08月03日 14:42
  • 1119

JVM内存静态与动态分配

1 静态内存分配与回收 在Java中静态分配内存是指在Java被编译时就已经能够确定需要的内存空间,当程序被加载时系统把内存一次性分配给它。这些内存不会再程序执行时发生变化,直到程序运行结束才被回收...
  • u010723709
  • u010723709
  • 2015年12月14日 14:10
  • 653

数组在jvm中的存储

Java数组在内存中是如何存放的 阅读目录 一维数组二维数组数组对象及其引用存放在内存中的哪里? Java中有两种类型的数组: 基本数据类型数组;对象数组; 当一个对象使...
  • liu136313
  • liu136313
  • 2017年03月17日 10:14
  • 842

监视JSP中JVM可用内存

公司有个JSP项目内存经常溢出,tomcat两个小时左右就停,我写了一个类对JVM可用内存进行了监测 import java.util.Timer; import java.util.Timer...
  • xiaohanshenchu
  • xiaohanshenchu
  • 2013年08月06日 13:12
  • 982

关于jvm几个关键内存配置参数

请看下面题目: 对于jvm内存配置参数: -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 其最小内存值和Survior区总大小分别是: a...
  • crazylzxlzx
  • crazylzxlzx
  • 2016年08月15日 12:21
  • 8154

jvm堆栈方法区数据存放和操作流程

栈:  1 基础数据类型 byte short int long float double char boolean  2 方法的形式参数,方法调用完后从栈空间回收  3 引用对象的地址,引用...
  • liu136313
  • liu136313
  • 2016年04月26日 12:50
  • 2119

JVM 内存空间分为几部分

内存空间分几部分:代码段、数据段,栈,堆 (收集整理) 1.函数代码存放在代码段。声明的类如果从未使用,则在编译时,会优化掉,其成员函数不占代码段空间。 全局变量或静态变量,放在数据段, 局部变...
  • u014421556
  • u014421556
  • 2016年09月01日 10:33
  • 3025

JVM内存区域详解

JVM内存模型总体架构图 程序计数器 多线程时,当线程数超过CPU数量或CPU内核数量,线程之间就要根据时间片轮询抢夺CPU时间资源。因此每个线程有要有一个独立的程序计数器,记录下一条要运行的指...
  • qq_36859415
  • qq_36859415
  • 2016年11月30日 14:22
  • 2251
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jvm(java)内存存储简单区分。
举报原因:
原因补充:

(最多只允许输入30个字)