关闭

java虚拟机管理的内存

319人阅读 评论(0) 收藏 举报
分类:




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:


1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

windows虚拟内存管理

内存管理是操作系统非常重要的部分,处理器每一次的升级都会给内存管理方式带来巨大的变化,向早期的8086cpu的分段式管理,到后来的80x86 系列的32位cpu推出的保护模式和段页式管理。在应用程序中...
  • lanuage
  • lanuage
  • 2016-07-21 09:22
  • 1955

java内存管理和垃圾回收机制

我们知道,java所谓的跨平台特性(hardware- and operating system-independence)是依赖于JVM的。也就是,JAVA代码写好了之后会被编译成java的字节,一...
  • u010223904
  • u010223904
  • 2015-08-28 10:48
  • 2047

深入理解JVM07--虚拟机类加载机制--类加载器、双亲委派模型

本文是基于周志明的《深入理解Java虚拟机》 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部实现,以便让应用程序自己决定如何去获取所...
  • oChangWen
  • oChangWen
  • 2016-05-21 23:59
  • 1932

JAVA虚拟机的内存管理

  • 2012-03-23 15:45
  • 371KB
  • 下载

JVM基础 之Java HotSpot虚拟机中的内存管理

转载:http://sishuok.com/forum/blogPost/list/339.html 1  简介          依托JavaTM 2平台的力量,标准版(J2SE...
  • sujiacheng_123
  • sujiacheng_123
  • 2016-12-30 16:19
  • 655

深入理解java虚拟机(一)--自动内存管理机制

java虚拟机运行时数据区java虚拟机在执行java程序时会将其管理的内存划分为若干不同的数据区域: - 程序计数器(Program Counter Register) - java虚拟机栈...
  • lansedeyouling
  • lansedeyouling
  • 2016-04-19 17:30
  • 278

深入理解java虚拟机之自动内存管理机制

java虚拟机是什么? 抽象规范 仅仅是一种概念 一个具体的实现 可能来自多个提供商或者运行在多个平台上 一个运行中的虚拟机实例  当运行一个java程序的同时,其实就是运行了一个java虚...
  • xiayingjie
  • xiayingjie
  • 2011-09-15 18:02
  • 240

java虚拟机内存管理介绍

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!   整个教程中已经不时的出现一些内存管理和垃圾回收的相关知识。这里进行一个小小的总...
  • lqglqglqg
  • lqglqglqg
  • 2015-08-17 08:50
  • 260

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

原文:http://www.blogjava.net/chhbjh/archive/2012/01/28/368936.html 本文主要是基于Sun JDK 1.6 Garbage Collec...
  • Kingson_Wu
  • Kingson_Wu
  • 2015-04-21 10:58
  • 509

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

目录[-] 概要 对象优先分配在Eden分配 大对象直接进入老年代 长期存活的对象进入老年代 动态对象年龄判定 概要 在Java技术体系中,自动内存管...
  • cq1982
  • cq1982
  • 2015-06-09 17:20
  • 440
    个人资料
    • 访问:447247次
    • 积分:7860
    • 等级:
    • 排名:第3101名
    • 原创:342篇
    • 转载:138篇
    • 译文:4篇
    • 评论:68条
    博客专栏