java虚拟机管理的内存

原创 2015年11月19日 23:31:52




1:程序计数器:每个线程都有一个独立的程序计数器,用来记录当

前线程所执行字节码的行号指示器,如果切换线程执行其他的线程的时候,字节码解释器就是通过这个计数器的值来制定下一个处理的字节码指令,

2:java虚拟栈:它是线程私有的,生命周期与线程相同,描述的 java方法的内存模型,每个方法被执行的时候都会创建一个栈帧(stack frame),用来存放局部变量,每个方法被调用到执行完的过程,都对应着每个栈帧在虚拟机中入栈到出栈的过程



本地方法栈:和java虚拟机栈相似,不同的地方在于他们服务的对象不同,java虚拟机栈为java方法服务的,本地方法栈为native方法服务的,其它都一样

java堆:是java虚拟机所管理的内存中最大的一块,也是所有线程所共享的一块区域,在java虚拟机启动的时候创建,存放的是java对象实例,java堆可以处于物理上不连续存储空间,只要逻辑上连续就行,就想磁盘空间一样,既可以设定固定大小,必要时也可以扩展,;但是如果,不可再扩展,切不可再分配内存给实例,就会出现内存溢出


方法区:和java堆一样,是所有线程所共享的一块区域,用来存放以被java虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据,java虚拟机规范称它为是堆得一个逻辑部分,但是它却有一个“堆”的别名



3:运行时常量池:方法区的一部分,class文件中除了类的版本,字段,方法,皆空等信息外,还有一项信息叫常量池,用来存放编译期生成的各种字面量和符号引用,这些内容,让在类加载后存放到方法区的运行时常量池中;java虚拟机规范中没有做出对运行时常量池的规范;运行时常量池相对于class文件常量池,另外一个重要特征是具有动态性;就是说不要求常量一定在编译器产生,运行时也可以动态的加入,debug不就是一个例子么,动态的改参数调试



4:直接内存:(direct mermory)并不是虚拟机运行时数据区的一部分,也不是java虚拟机规范中定义的内存区域,但是这部分内存也被频繁的使用,而且也可能导致异常出现,所以我们放到这里一起讲解;这个直接内存指的是:在java 1.4中新引入的NIO类,引入了一种基于通道与缓冲区的I/o方式,他可以使用native函数库直接分配堆外内存,然后通过一个存储在java堆里面的directbytebuffer对象作为这块内存引用进行操作(就是引用在堆里面,实例在外面),遮阳能在一些场景中显著提高性能,因为避免了在javadui

和native堆中来回复制数据

显然本机直接内存的分配不会受到java堆大小的限制,但是,既然是内存,则肯定还是会受到本机总内存的大小及处理器寻址空间的限制,服务器管理员配置虚拟机参数时,,一般会根据实际内存设计-xmx等参数信息,但经常会忽略掉直接内存,使得各个内存屈辱的中和大于物理内存限制(包括物理上的和草错系统级的限制),从而导致动态扩展时出现内存溢出

5:


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JAVA虚拟机的内存管理

  • 2012年03月23日 15:45
  • 371KB
  • 下载

探秘Java虚拟机——内存管理与垃圾回收

本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索。 1、Java虚拟机运行时的数据区 2、常用的内存区域...
  • csummm4
  • csummm4
  • 2014年03月31日 17:08
  • 400

Java虚拟机内存管理(二)

1.JVM内存溢出几种情况

Java HotSpot虚拟机的内存管理(垃圾收集)

文章主要从垃圾收集来讲解内存的管理 年轻代分为:Eden、两个survior空间:To和From 1.串行收集器(Serial Collector) 年轻代和年老代都是用串行收集,即单线程的,收集...

Sun JVM内存管理与Java虚拟机(JVM)垃圾回收器的工作机制

转自:http://dev.firnow.com/course/3_program/java/javajs/20100719/453020.html内存管理和垃圾回收是JVM非常关键的点,对Java性...
  • wf1982
  • wf1982
  • 2011年02月15日 17:37
  • 1127

《深入理解Java虚拟机》学习小记一之自动内存管理机制(一)

Java内存区域与内存溢出异常一、概要二、运行时数据区域2.1程序计数器2.2虚拟机栈2.3本地方法栈2.4堆2.5方法区2.6运行时常量池三、对象访问四、OutOfMemoryError异常4.1J...

《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——自动内存管理机制

《深入理解Java虚拟机——JVM高级特性与最佳实践》学习笔记——自动内存管理机制1.概述对于从事C、C++程序开发的开发人员来说,在内存管理领域,既拥有每一个对象的”所有权”,又担负着每一个对象生命...

Java虚拟机内存管理(一)

关于JVM的书籍,特别是中文书籍很少。周志明的深入理解JVM是一本很好的书 我把里面一些关于JVM内存管理的基础知识做一个记录,有需要的同学也可以看看 还有淘宝网莫枢在ITEye创建的虚拟机论坛,也是...

探秘Java虚拟机——内存管理与垃圾回收

本文主要是基于Sun JDK 1.6 Garbage Collector(作者:毕玄)的整理与总结,原文请读者在网上搜索。 1、Java虚拟机运行时的数据区 2、常用的内存区域调节...
  • zf0216
  • zf0216
  • 2012年04月10日 13:31
  • 444

深入理解Java虚拟机学习总结(一) 自动内存管理机制

1、java技术体系:主要五类如下      java语言         各种硬件平台上的java虚拟机     class文件格式     java  API类库     第三方java类库 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java虚拟机管理的内存
举报原因:
原因补充:

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