StackTc
StackTc
2018-04-26 04:04
采纳率: 61.9%
浏览 5.4k
已采纳

Class对象就是.class文件?那么这个对象存在哪里呢?本地硬盘?不是内存中吗

Class对象就是.class文件?那么这个对象存在哪里呢?本地硬盘?不是内存中吗

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • hengliang_zhu
    yjzhl 2018-04-26 04:35
    已采纳

    编译一个java新类时,编译器会把该新类源文件编译成class对象,保存为同名的.class文件。运行时装载该.class文件到内存里,并生成实例对象。

    点赞 评论
  • daojian_
    daojian_ 2018-04-26 04:17

    编写一个新的java类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。
    在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。
    若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。

    点赞 评论
  • qq_40658408
    qq_40658408 2018-04-26 04:23

    Class类被创建后的对象就是Class对象,注意,Class对象表示的是自己手动编写类的类型信息,比如创建一个Shapes类,那么,JVM就会创建一个Shapes对应Class类的Class对象,该Class对象保存了Shapes类相关的类型信息。实际上在Java中每个类都有一个Class对象,每当我们编写并且编译一个新创建的类就会产生一个对应Class对象并且这个Class对象会被保存在同名.class文件里(编译后的字节码文件保存的就是Class对象),那为什么需要这样一个Class对象呢?是这样的,当我们new一个新对象或者引用静态成员变量时,Java虚拟机(JVM)中的类加载器子系统会将对应Class对象加载到JVM中,然后JVM再根据这个类型信息相关的Class对象创建我们需要实例对象或者提供静态变量的引用值。需要特别注意的是,手动编写的每个class类,无论创建多少个实例对象,在JVM中都只有一个Class对象,即在内存中每个类有且只有一个相对应的Class对象

    点赞 评论
  • hu837389340
    hu837389340 2018-04-26 05:49

    建议看一下java类的加载机制https://blog.csdn.net/fgets/article/details/52934178

    点赞 评论
  • qq_39969785
    qq_39969785 2018-04-26 05:58

    JDK7以上版本,静态域存储于定义类型的Class对象中,Class对象如同堆中其他对象一样,存在于GC堆中。

    点赞 评论
  • lixiaozhen007
    lixiaozhen007 2018-04-26 08:51

    new,对象存在虚拟得jvm空间里,简单得就是堆栈内存把,不会再磁盘中得,.class文件一般再tomcat等一些web服务目录下,这个文件,对应一个类
    一个类,不能重名字得,但是这个对象得属性是相同得,但是名字也不同,一个类没限制大小,我不知道限制了没,也没限制对象多少

    点赞 评论
  • qq_38238296
    吴一尘 2018-10-08 07:44

    编译好的.java程序,通过java编译器生成.class文件,然后由类加载机制加载到jvm中,并且会随之生成一个相应的Class对象,这个对象是存放在推内存中的,他包含了有关类的所有信息。

    点赞 评论

相关推荐