如何检查Java虚拟机中存储方法的区域

如何检查Java虚拟机中存储方法的区域,java,jvm,Java,Jvm,问题 我的对象的方法存储在哪里 如果我卸载java应用程序,我能看到那个区域吗 背景 我试图测量对象的大小,并意识到方法与对象数据存储在不同的位置 我试图“查看”这些方法的代码存储在正在运行的Java应用程序中的何处 我尝试使用jmap转储堆,并使用jhat检查转储,但是我找不到任何关于我的类的方法在哪里的有用信息 我的对象的方法存储在哪里 它们存储在Class对象中,该对象保存在PemGen空间中 如果我卸载java应用程序,我能看到那个区域吗 这不是小事。JVM执行了一些优化,比如JIT编译

问题

  • 我的对象的方法存储在哪里
  • 如果我卸载java应用程序,我能看到那个区域吗
  • 背景

    我试图测量对象的大小,并意识到方法与对象数据存储在不同的位置

    我试图“查看”这些方法的代码存储在正在运行的Java应用程序中的何处

    我尝试使用jmap转储堆,并使用jhat检查转储,但是我找不到任何关于我的类的方法在哪里的有用信息

    我的对象的方法存储在哪里

    它们存储在
    Class
    对象中,该对象保存在
    PemGen
    空间中

    如果我卸载java应用程序,我能看到那个区域吗

    这不是小事。JVM执行了一些优化,比如JIT编译,这使得这项任务更加困难

    我试图“查看”这些方法的代码存储在正在运行的Java应用程序中的何处

    您知道每个类,而不是每个实例,每个方法只有一个副本吗?这意味着一旦类被
    类加载器
    加载,该类的所有方法都存储在内存中。创建多少实例并不重要。话虽如此,您可能并不关心方法消耗了多少内存

    另见:

    每个类(而不是每个实例)都有一个方法代码实例…可能是重复的。投票结束,因为两个链接问题中的答案都会提供您所需的所有信息。您有60多个问题没有被接受的答案。也许你可以跟进答案,看看它们是否可以被接受。