`
躁动的绵羊
  • 浏览: 94299 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

深入JVM——方法区

阅读更多
    当JVM使用类装载器装载某个类时,它首先要定位对应的class文件,然后读入这个class文件,最后,JVM提取该文件的内容信息,并将这些信息存储到方法区,最后返回一个class实例。上面是对类的装载过程作了个简单的描述,看了上面一段文字,也许你会问:方法区是什么?里面存了哪些内容?下面我们将对方法区作一个详细的描述。
  
     方法区是什么?有哪些特点?

     方法区是系统分配的一个内存逻辑区域,是用来存储类型信息的(类型信息可理解为类的描述信息)。方法区主要有以下几个特点:
      一.方法区是线程安全的。由于所有的线程都共享方法区,所以,方法区里的数据访问必须被设计成线程安全的。例如,假如同时有两个线程都企图访问方法区中的同一个类,而这个类还没有被装入JVM,那么只允许一个线程去装载它,而其它线程必须等待
     二.方法区的大小不必是固定的,JVM可根据应用需要动态调整。同时,方法区也不一定是连续的,方法区可以在一个堆(甚至是JVM自己的堆)中自由分配。
     三.方法区也可被垃圾收集,当某个类不在被使用(不可触及)时,JVM将卸载这个类,进行垃圾收集
  
     方法区里存放的是哪些内容?

    方法区里存的都是类型信息,也就是类的信息,而类的信息又包括以下内容:
     类的全限定名(类的全路径名)
    类的直接超类的全限定名(如果这个类是Object,则它没有超类)
    这个类是类型(类)还是接口
     类的访问修饰符,如public、abstract、final等
     所有的直接接口全限定名的有序列表(假如它实现了多个接口)
    常量池
     字段、方法信息、类变量信息(静态变量)    装载该类的装载器的引用(classLoader)、类型引用(class)


     其实,我们没必要全部记住,只要根据上面内容有个大概的了解,然后对类型这个概念有个大概的认识即可。下面我们将主要对常量池和类变量信息作一下分析。
      先说类变量吧,类变量内容少些,描述起来比较容易。类变量,顾名思义,就是属于类的变量,所有类的实例都共享的变量,也就是常说的静态变量。关于类变量,我们只要知道方法区里有个静态区,静态区是专门用来存放静态变量以及静态块的。所有类的实例都共享方法区中的内容。访问类变量的方式可通过实例(对象)来访问,也可通过类型来直接访问,java规范推荐使用类型来直接访问。
      
       相对于类变量来说,常量池比较复杂,关于常量池将在后面分析
8
1
分享到:
评论
3 楼 giianhui 2012-05-21  
就目前的工作来说,我认为很有必要
2 楼 躁动的绵羊 2010-09-24  
XTU_xiaoxin 写道
搞java有必要研究JVM吗?

仅仅是笔记,面试老问这些破东西,很郁闷
1 楼 XTU_xiaoxin 2010-09-24  
搞java有必要研究JVM吗?

相关推荐

    深入JVM内核—原理、诊断与优化

    深入JVM内核—原理、诊断与优化视频教程———目前,Java是更为流行的编程语言之一,它的基础平台就是JVM。除了Java,如JRuby、Scala、Clojure等语言也运.

    深入java虚拟机

    1.13 慢慢琢磨JVM——恭喜JavaEye重新开张 2. 线程安全 2.1 java线程安全总结 3. JVM实战 3.1 通过Java/JMX得到full GC次数? 3.2 如何更快的启动eclipse 4. JVM基础 4.1 JVM内存管理:深入Java内存区域与OOM 4.2 ...

    深入JVM内核 - 原理、诊断与优化

    介绍JVM规范中的最重要的内容——Class文件结构,同时介绍ASM库的使用以及对class文件的修改。 第十一课 字节码执行 案例以及javap JIT及相关参数 介绍JVM的字节码以及反汇编方法,同时介绍JIT相关的参数和应用。

    深入理解jvm-2Edition-类文件结构(csdn)————程序.pdf

    深入理解jvm-2Edition-类文件结构(csdn)————程序

    深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) pdf下载-附件资源

    深入理解Java虚拟机:JVM高级特性与最佳实践(第2版) pdf下载-附件资源

    深入理解Java虚拟机——Java发展史.xmind

    这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...

    java-virtual-machine-analysis.zip_jvm规范

    研究Java平台的核心——虚拟机.为了使Java在不同的平台上顺利运行,研究Java虚拟机(Java virtual machine,简称JVM)的组成及运行机制,为编程实现JVM或向各种平台移植JVM提供参考.通过对Kaffe(一种 Java虚拟机的实现)...

    深入理解Java虚拟机——Java内存区域与内存溢出异常.xmind

    这是自己读《深入理解Java虚拟机》时候用XMind建立的思维导图,目的是为了能够帮助自己整理、梳理相关的知识以及方便自己日后的回顾,帮助自己建立起关于JVM的知识体系,里边也有一些对相关内容的补充,通过备注的...

    java深度历险——王森

    关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加载Class的...推荐看一下王森的《Java深度历险》,对这两个问题进行了深入的探讨。

    深入解析JVM之内存结构及字符串常量池(推荐)

    Java作为一种平台无关性的语言,其主要依靠于Java虚拟机——JVM,接下来通过本文给大家介绍JVM之内存结构及字符串常量池的相关知识,需要的朋友可以参考下

    jvm::hugging_face:JVM充满原理最全知识总结

    Java虚拟机实质原理知识总结这里仅仅记录了一些笔者认为需要重点掌握的JVM知识点,如果你想更全面地了解JVM逐步原理,可以阅读周志明老师《深入理解Java虚拟机——JVM高级特性与最佳实践(第2/3版)》全书。...

    Java性能调优实战——覆盖80%以上的Java应用调优场景

    避免使用Java序列化14讲多线程之锁优化(下):使用乐观锁优化并行操作16讲多线程调优(下):如何优化多线程上下文切换17讲并发容器的使用:识别不同场景下最优容器21讲深入JVM即时编译器JIT,优化Java编译25讲答疑...

    Java虚拟机分析

    通过对 Kaffe(一种Java虚拟机的实现 )桌面版本的源代码进行分析 ,得出虚拟机运行的整个流程 ,并对流程中的关键部分进行深入研究 ,同时结合 Sun的《Java虚拟机规范》,总结出实现 JVM的一些关键步骤 ,并提出改进 JVM...

    理解虚拟机--有笔记版

    深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)

    深入理解Spark 核心思想与源码分析.7z

    在大量的工作实践中,对J2EE、JVM、Tomcat、Spring、Hadoop、Spark、MySQL、Redis都有深入研究,尤其喜欢剖析开源项目的源码实现。早期从事J2EE企业级应用开发,对Java相关技术有独到见解。业余时间喜欢研究中国古代...

    java虚拟机带目录高清

    JAVA虚拟机学习材料《深入了解JAVA虚拟机——JVM的高级特性》第二版 文字很清楚带有目录

    Java虚拟机

    深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)_带书签目录及源码,有需要的拿去享用吧

    精品:java虚拟机分析与优化PPT

    李镭——现任IBM中国有限公司软件部WebSphere高级工程师。 2002年加入IBM公司软件部,至今一直从事中间件产品家族的售前和售后工作。为IBM的重要合作伙伴提供软件的技术支持和培训指导,也同时为江苏电信、江苏联通...

    java classload教程

    然后深入探讨java虚拟机(JVM)是如何利用类加载器读取代码,以及java中类加载器的主要类型。接着用一个类加载的基本算法看一下类加载器如何加载一个内部类。本文的下一节演示一段代码来说明扩展和开发属于自己的类...

Global site tag (gtag.js) - Google Analytics