当前位置: 首页 > 面试题库 >

Java .class文件是否存储在JVM内存中

廖永长
2023-03-14
问题内容

我阅读了JVM内存模型,并对以下内容感到困惑:

  1. JVM是否将.class实例存储在其内存中。如果是,则在哪个区域。
  2. 就像在加载类后,JVM生成了机器级代码,然后开始执行机器代码指令,然后仅在堆上创建对象,并填充了方法区域。
  3. perm gen等区域存储字节码还是机器级代码?
  4. 烫发与方法面积

我真的很感谢您对此主题的任何帮助。

谢谢。


问题答案:

1).class文件将在加载时存储在permgen存储区中。

2)HEAP上的对象将在程序运行时(在您显式创建时)而不是在加载时创建。JVM懒惰地编译方法,也就是说,它发出小的存根代替将触发每个方法编译的方法的已编译机器代码。这意味着永远不会编译不使用的方法。

3)perm gen存储字节码(将加载.class文件),不确定机器级代码。



 类似资料:
  • 我使用一个java jdbc应用程序从DB中获取大约500,000条记录。使用的数据库是Oracle。当每一行被取出时,我就将数据写入文件。由于获取整个数据需要大约一个小时,所以我尝试增加结果集的获取大小。我在多个链接中看到,在增加读取大小的同时,应该小心内存消耗。增加读取大小实际上会增加jvm使用的堆内存吗?< br >假设提取大小为10,程序查询总共返回100行。在第一次提取期间,结果集包含1

  • 问题内容: 在ExpressJS for NodeJS中,我们可以执行以下操作: 提供所有静态CSS,JS和图像文件。我的问题是: 1)当我们这样做时,Express是否会在每次提供一种资源时自动在服务器内存中缓存文件,还是从硬盘上读取文件? 2)执行此操作时,Express是否默认使用ETag将资源保存在客户端的硬盘上或仅在客户端的内存上? 问题答案: 静态中间件不进行服务器端缓存。它使您可以执

  • 问题内容: 我正在使用Java JDBC应用程序从数据库中获取约500,000条记录。使用的数据库是Oracle。取出每一行后,我立即将数据写入文件。由于完成整个数据的获取大约需要一个小时,因此我试图增加结果集的获取大小。我已经在多个链接中看到,在增加访存大小的同时,应该注意内存消耗。增加获取大小实际上是否会增加jvm使用的堆内存? 假设获取大小为10,并且程序查询总共返回100行。在第一次读取期

  • 使用数据库时,您可以执行< code>snapshot.exists()来检查某些数据是否存在。根据文件,没有类似的储存方法。 https://firebase.google.com/docs/reference/js/firebase.storage.Reference 检查某个文件是否存在于Firebase存储中的正确方法是什么?

  • 除了这些地方之外,hostspot JVM进程还在哪里存储内存: 烫发 终身制发电 伊甸园空间 从空间 到空间 代码缓存 也就是说:热点进程可以保留哪些可能的方式 我能想到的一些答案(让我知道这些是不是真的): 用于线程栈的虚拟内存没有用这些数字表示 任何加载的dll或文件。 编辑: 给出的一些其他答案: Java.exe本身 JNI方法可以分配内存本身 任何本机代码(例如来自DLL)都可以分配内

  • JVM内存分为:1.方法区2.堆区3.堆栈4.PC寄存器5.本机堆栈 > 现在假设我有一个属性为“int[]dealCodes”(int基元数组)的类。根据内存管理,一旦处理代码初始化,内存中就会有连续内存分配(total_elements*4字节)。所以,如果数组大小为10,则JVM内存中有40字节的分配。 我的问题是,这40个字节将分配到哪个区域(堆还是堆栈)? 我对数组的理解是:它就像任何其