永久代被废弃了为什么CLASS文件常量池还能被称为永久代呢
时间: 2024-03-07 11:51:45 浏览: 17
确实,由于永久代(Permanent Generation)在JDK8以后被废弃,因此Class文件常量池也不再是永久代的组成部分。然而,由于在早期的Java虚拟机实现中,Class文件常量池和永久代是在内存中相邻的区域,因此有些文献和资料中仍然将Class文件常量池称为永久代。这种称呼并不准确,容易引起混淆。实际上,Class文件常量池应该被看做是方法区(Method Area)的一部分,而不是永久代。在JDK8以后,元空间(Metaspace)取代了永久代,但是Class文件常量池和元空间仍然是两个不同的概念。
相关问题
JDK8以后不是废弃了永久代吗
是的,JDK8以后,Java虚拟机中的永久代(Permanent Generation)被元空间(Metaspace)所取代,但是元空间仍然属于方法区的范畴。永久代被废弃的原因是因为在旧的实现中,永久代使用的是固定大小的内存空间,而且不能回收。这样会导致内存泄漏的问题,特别是在运行时动态生成类的情况下。而元空间则是使用本地内存(Native Memory)实现的,可以根据需要动态调整大小,并且可以回收。因此,元空间比永久代更加灵活和高效。
android stdio 为什么startActivityForResult被标记为废弃
从appcompat1.3.0开始,startActivityForResult方法被标记为已废弃的原因是官方建议使用registerForActivityResult方法来代替。 这是因为在新的Android开发中,谷歌推荐使用ActivityResultContracts.StartActivityForResult对象来处理活动结果,而不是使用旧的startActivityForResult方法。 这样的变化是为了提高代码的可读性和维护性,并更好地适应现代的Android开发模式。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [Android Studio 学习记录-在活动之间传递消息](https://blog.csdn.net/demon_dog/article/details/128980240)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]