首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java 静态变量 存储_Java中存储静态方法和静态变量在哪里?「建议收藏」

大家好,又见面了,是你们朋友全栈君。 静态方法(实际上所有方法)以及静态变量都存储在PermGen部分,因为它们是反射数据一部分(类相关数据,而不是与实例相关)。...需要澄清最新情况: 注意,只有变量及其技术值(原语或引用)存储在PermGen空间中。 如果静态变量对象引用,则该对象本身存储在堆正常部分(年轻/旧代或幸存者空间)。...当然,您可以将静态变量设置为NULL,从而删除对堆上对象引用,但这并不意味着垃圾回收器将要收集它(即使没有更多参考资料)。...上面的内容是基于HotsforJava 5和6(它们基本上是相同),因为在回答时,想说大多数人都使用这些JVM。...由于Java 8时内存模型发生了重大变化,上述语句可能不适用于Java 8 HotSpot-而且没有检查Java 7 HotSpot更改,所以我猜以上对于那个版本仍然是正确,但我在这里不确定

2.6K10

java static 变量存在哪_Java静态方法和静态变量存储在哪里?

大家好,又见面了,是你们朋友全栈君。 小编典典 静态方法(实际上是所有方法)以及静态变量都存储在PermGen堆部分中,因为它们是反射数据(与类相关数据,而不与实例相关数据)一部分。...更新说明: 请注意,只有变量及其技术值(原始或引用)存储在PermGen空间中。 如果你静态变量是对对象引用,则对象本身存储在堆常规部分(青年/旧世代或幸存者空间)中。...当然,你可以将静态变量设置为null,从而删除对堆上对象引用,但这并不意味着垃圾收集器将收集它(即使没有更多引用了)。...上面的内容基于Java 5和6HotSpot(基本上是相同),因为在回答之时,我会说大多数人都使用了这些JVM。...由于Java 8内存模型发生了重大变化,因此上述陈述可能不适用于Java 8 HotSpot,并且没有检查Java 7 HotSpot变化,所以我想以上对于该版本仍然适用,但我不确定在这里

1.8K30
您找到你想要的搜索结果了吗?
是的
没有找到

15. Kotlin 究竟该不该用 lateinit?

因为被 lateinit 标记变量,不再接受空安全检查,它表现更像是一个普通 Java 变量。...也有同学喜欢尽可能用上它,把 lateinit 作为介于 nonnull 和 nullable 之间一个状态:对象构造时为 null,在某一个时刻被初始化后一直都是 nonnull,这样属性不确定性便减少了...是代码逻辑结构不正确导致,如在某些情况下,上层在调用模块 init() 方法之前,就调用了模块其他方法。此时抛出 UninitializedPropertyAccessException。...使用 lateinit 痛苦 理论和实践都完善了,但使苦恼是,UninitializedPropertyAccessException并没有得到高效解决,而是三头两日时不时在灰度时冒出来,使被迫打断当前工作...Kotlin UninitializedPropertyAccessException本质上和 Java 空指针错误是一样,都是错误估计此处对象不可能为空导致

1.9K20

​DID-M3D:用于单目3D物体检测解耦实例深度

相比之下,属性深度依赖于对象固有属性,这些属性对于图像上对象仿射变换是不变。相应地,我们将3D位置不确定性解耦为视觉深度不确定性和属性深度不确定性。...与仿射敏感相反,属性深度对于任何仿射变换都是不变,因为对象固有特性不会改变。作者称这种性质为仿射不变量。 因此,作者使用两个独立头部来分别估计视觉深度和属性深度。...鉴于作者已经将实例深度解耦为视觉深度和属性深度,可以进一步解耦实例深度不确定性。只有当一个对象同时具有低视觉不确定性和低属性深度不确定性时,实例深度才能具有较高置信度。...为了进行公平比较,对于基线,作者还采用了网格设计(实验(b))。这一结果表明,由于实例深度耦合性质,网络表现不佳。...这种趋势使视觉深度更加直观,即接近于像素级深度。 然而,细粒度网格将导致在学习对象属性方面的性能不佳,因为这些属性集中于整体对象。因此,作者对网格大小m进行消融实验,结果如表5所示。

44330

最近遇到10个Java面试问题

最近,参加了一些java面试。突然,有了一个想法,想和大家分享经历。希望能通过分享最近几个月遇到10个Java面试问题来帮助大家。...最近遇到10个Java面试问题 在这篇文章中,试图收集最有趣和常见问题。另外,我会给你正确答案。 让我们来看看这些问题。 1、用10分来评估你自己——你在Java方面有多好?...为了线程安全,避免使用同步;字符串是隐式线程安全。 4、字符串在Java类加载器中使用,不可变性提供了正确类被类加载器加载安全性。例如,考虑一个您试图加载java.sql实例。...2、使所有字段都是私有的,这样就不允许直接访问。 3、不要为变量提供setter方法 4、让所有可变字段成为final,这样它值只能被赋值一次。 5、通过执行深度复制构造函数初始化所有字段。...它包含静态变量,这些静态变量可以容纳其自身惟一和私有实例。当用户希望将类实例化限制为一个对象时,可以使用它。当需要单个对象来协调跨系统操作时,这通常是有帮助。 10、什么是依赖注入?

65730

挑战10个最难回答Java面试题(附答案)

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

1.4K40

JavaScript基础:call,apply,bind详解,三者有何区别和联系

this指向,目前所有关于它们运用,都是基于这一点来进行。...关于js事件循环机制不理解同学,可以看我这篇博客:Js 事件循环(Event Loop)机制以及实例讲解 那么如何使他输出: 1,2,3,4,5呢?...箭头函数绑定this指向 箭头函数this指向定义时候外层第一个普通函数this,在这里指的是class类:PageA 这块内容,可以看下之前写博客:详解箭头函数和普通函数区别以及箭头函数注意事项...所以正确解决方案,应该是像我上面那么做: // 正确判断函数上下文对象     if (context === null || context === undefined) {        // 指定为...思路: 传递给函数参数处理,不太一样,其他部分跟call一样。 apply接受第二个参数为类数组对象, 这里用了JavaScript权威指南中判断是否为类数组对象方法。

1.1K10

Java 大牛看过来,挑战10道超难 Java 面试题!

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

70231

挑战 10 道超难 Java 面试题

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

71620

听说这10道Java面试题90%的人都不会!!!

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

62820

浅析Java方法调用

--- 深入理解 一、null是代表不确定对象     Java中,null是一个关键字,用来标识一个不确定对象。...因此可以将null赋给引用类型变量,但不可以将null赋值给基本类型変量。比如:int a=null; 是错误;而Ojbect o=null是正确。...二、null本身不是对象,也不是 Objet实例,null本身虽然能代表一个不确定对象,但就null本身来说,它不是对象,也不知道什么类型,也不是java.lang.Objecte实例。...类型 三、Java默认给变量赋值     在定义变量时候,如果定义后没有给变量赋值,则Java在运行时会自动给变量赋值。...2、释放内存,让一个非null引用类型变量指向null,这样这个对象就不再被任何对象用了,等待JVM垃圾回收机制去回收。

1.2K20

史上最难10道 Java 面试题!

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

83230

挑战 10 道超难 Java 面试题

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

67720

挑战 10 道超难 Java 面试题

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

72810

Java运行时数据区域

学海无涯,一次分享知识点是有限,但是学习是无限这有一份Java中高级核心知识全面解析,内含业内大佬笔记,如有需要,戳此处免费领取。...:局部变量表存放了编译期可知各种Java虚拟机基本数据类型(boolean、byte、char、short、int、float、long、double)、对象引用(reference类型,它并不等同于对象本身...Java堆(Java Heap) 是虚拟机所管理内存中最大一块。Java堆是被所有线程共享一块内存区域,所以此处对象会涉及线程安全问题。在虚拟机启动时创建。...此内存区域唯一目的就是存放对象实例Java世界里“几乎”所有的对象实例在这里分配内存。...,所以说Java对象实例都分配在堆上也渐渐变得不是那么绝对了。

31540

js基础-关于call,apply,bind一切

this指向,目前所有关于它们运用,都是基于这一点来进行。...关于js事件循环机制不理解同学,可以看我这篇博客:Js 事件循环(Event Loop)机制以及实例讲解 那么如何使他输出: 1,2,3,4,5呢?...箭头函数绑定this指向 箭头函数this指向定义时候外层第一个普通函数this,在这里指的是class类:PageA 这块内容,可以看下之前写博客:详解箭头函数和普通函数区别以及箭头函数注意事项...: [原始值实例对象] 所以正确解决方案,应该是像我上面那么做: // 正确判断函数上下文对象 if (context === null || context === undefined)...思路: 传递给函数参数处理,不太一样,其他部分跟call一样。 apply接受第二个参数为类数组对象, 这里用了JavaScript权威指南中判断是否为类数组对象方法。

1.4K21

HashMap相关(二)

(结构上修改是 指添加或删除一个或多个映射关系操作;仅改变与实例已经包含键关联值不是结构上修改。)这一般通过对自然封装该映射对象进行同步操作来完成。...因此,面对并发修改,迭代器很快就会完全失败,而不冒在将来不确定时间任意发生不确定行为风险。...前面介绍了,HashMap是基于HashCode,在所有对象超类Object中有一个HashCode()方法,但是它和equals方法一样, 并不能适用于所有的情况,这样我们就需要重写自己HashCode...而覆盖equals()是为了在HashMap判断两个key是否相等时使结果有意义(有关重写equals()内容可以参考另一篇文章《重新编写Object类中方法 》)。...利用面向对象多态性——覆盖,Java设计者很优雅构建了Java结构,也更加体现了Java是一门纯OOP语言特性。

44550

90%Java程序员不会10道Java面试题

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

99500

10 大 Java面试难题,打趴无数面试者!

4) Java基于 Hoare 监视器思想。在Java中,所有对象都有一个监视器。...另一个基于 String 棘手 Java 问题,相信我只有很少 Java 程序员可以正确回答这个问题。...如果你不相信, 那就比较一下下面的传统双检查锁定单例和枚举单例代码: 在 Java 中使用枚举单例 这是我们通常声明枚举单例方式,它可能包含实例变量实例方法,但为了简单起见,没有使用任何实例方法...问题13) 在 Java 序列化期间,哪些变量未序列化? 这个问题问得不同, 但目的还是一样, Java开发人员是否知道静态和瞬态变量细节。...不确定是否是面试官实际期待,但这个认为至少有意义,请纠正如果错了,请告诉我们是否还有其他令人信服理由调用 wait(),notify() 或 Java notifyAll() 方法。

1.7K21
领券