我正在阅读Java内存管理中的文档,并且遇到了我无法理解的PermSize。该文档说它存储了“
JVM存储了它的元数据”,但是我无法确切地了解元数据的含义。我在谷歌上搜索,在我读过的地方存储了一个值对象(用户定义的对象)。
什么样的对象存储在那里?一个带有解释的例子将是很好的。
“永久世代”的简要定义:
“永久代用于保存VM本身的反射数据,例如类对象和方法对象。这些反射对象直接分配到永久代中,并且大小独立于其他代。”
[参考]
换句话说,这就是类定义的去处(这解释了为什么OutOfMemoryError: PermGen space
在应用程序加载大量类和/或重新部署时可能会收到消息的原因)。
请注意,这 PermSize
是 -Xmx
用户在JVM选项上设置的值的附加功能。但是 MaxPermSize
允许JVM能够将其增长 PermSize
到指定的数量。最初,在加载VM时, MaxPermSize
仍将是默认值(代表32mb
-client
和代表64mb -server
),但直到需要时才真正占用该数量。另一方面,如果将BOTH PermSize
和
MaxPermSize
BOTO 都设置为256mb,则会注意到总体堆增加了256mb -Xmx
。
问题内容: 除了让编译器检查超类是否具有该方法之外,是否有任何其他理由来注释方法? 问题答案: 如您所描述的,@ Override创建一个编译时检查,以确保方法被覆盖。这对于确保尝试覆盖时不会出现愚蠢的签名问题非常有用。 例如,我看到以下错误: 此类按编写方式进行编译,但是将@Override标记添加到equals方法将导致编译错误,因为它不会覆盖Object上的equals方法。这是一个简单的错
问题内容: 我正在研究Java代码,我需要在其中实现线程。我正在通过JAVA 8 API,我了解了Stamped Locks。谁能告诉我为什么在多线程中使用StampedLocks? 提前致谢。 问题答案: StampedLock是使用ReadWriteLock(由ReentrantReadWriteLock实现)的替代方法。StampedLock和ReentrantReadWriteLock之间
问题内容: 它们之间有什么区别? 是Integer类型的数组列表。 版本1: 版本2: 问题答案: 将返回,然后调用它将返回整数作为type 。 转换的到被称为 拳击 。 将转换为的操作称为 拆箱,依次 类推,以便在其他原始类型及其对应的Wrapper类之间进行转换。 从Java 5开始,它将自动为您进行所需的转换(自动装箱),因此, 如果您使用的是Java 5或更高版本,则示例之间没有区别 。
问题内容: 是否确实有一些功能,或者它只是有点对此有何评论? 问题答案: 从有关注解的Java教程中: — 注释告知编译器该元素旨在覆盖超类中声明的元素(覆盖方法将在名为“接口与继承”的课程中进行讨论)。 虽然在重写方法时不需要使用此批注,但它有助于防止错误。如果标有的方法无法正确覆盖其父类之一中的方法,则编译器将生成错误。 让我们看一下Java语言规范9.6.1.4 Override中 给出的示
问题内容: 我写了这段代码: 我得到这个: 为什么?的定义是什么? 问题答案: 在Java中,当您输入一个十进制数为时,它被解释为。是64位精度的IEEE 754浮点,而32位精度的IEEE 754浮点。由于a 的精确度低于a ,因此无法隐式执行转换。 如果要创建浮点数,则应以(。:) 结尾。 有关更多说明,请参见Java教程的原始数据类型定义。
问题内容: 什么啊 是任何实例吗? 属于什么集合? 它在内存中如何表示? 问题答案: 是否是任何实例? 不,没有类型是。 15.20.2类型比较运算符 在运行时,运算符的结果是,true如果的值不是,并且引用可以强制转换为而不引发。否则结果为。 这意味着对于任何类型的E和R,对于任何,在那里,永远是。 “ null”属于什么集合? JLS 4.1类型和值的种类 还有一个特殊的类型,即的类型,它没有