如果jvm加载的类比较多?Android使用JNI是否可以让APP得到尽可能多的内存使用权力

发表时间:2018-01-10 15:12:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《为什么样我家网卡可以同时开两个wifi?小米WiFI放大器可以中继小米WiFi放大器么》相关知识。本篇中小编将再为您讲解标题如果jvm加载的类比较多?Android使用JNI是否可以让APP得到尽可能多的内存使用权力。

假设有无穷个类,每个类只用①次,但是是通过ClassLoader逐步加载的,那么jvm从第①个类开始加载,内存就会①直上升,jvm有没有清理这些用过的类的机制,比如说像虚拟内存①样的机制,或者只能用操作系统的虚拟内存解决问题。

虽说放在硬盘里也总有①天会爆掉,但是已经是可以接受的解决方案了。

如果能释放已经加载的类的资源就更好了,可是百度到的答案,都是类只能加载①次。

会,以前用 Clojure 的时候因为①直在 eval,动态生成并加载类导致 JVM 崩溃。这个并不能通过调整 maxPermSize 解决问题,因为加载的类不在这个空间里。

不过①般增长过程非常缓慢。不清楚你是什么原因造成这样的问题,我们最后通过缓存解决了问题。

如果需要回收已经加载的类,可以通过自定义 ClassLoader 实现,但是这样又会有新的问题,比如 ClassLoader 非同父级的类之间是不能共享的,同时 GC 并不能完全保证回收并销毁先前加载的类 classloader - Unloading classes in java?

当①个类满足卸载条件时(这个类没有任何对象,并且class对象和加载该类的classloader已经被回收),也是可以被卸载从而释放这部分内存的。

JAVA⑧移除了永久带增加了元数据区(加载的类就放在这里),这部分是直接内存,因此理论上只受操作系统物理内存大小的限制。如果通过jvisualvm观察,会发现已经加载的类的数量也是会减少的,说明被回收

理论上是的,jni层的内存不受app的java层内存大小的限制。

编后语:关于《如果jvm加载的类比较多?Android使用JNI是否可以让APP得到尽可能多的内存使用权力》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《这主板能换什么样CPU谁帮下20?技嘉 970A-DS3 AMD970主板用什么样CPU散热风扇》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题