首页 > 免root版 > 怎么用gg修改器弄root_如何使用gg修改器?
怎么用gg修改器弄root_如何使用gg修改器?
  • 怎么用gg修改器弄root_如何使用gg修改器?

  • 大小:8.63MB日期:2024-07-27 09:38:29
  • 语言:简体中文系统:Android
绿色无毒,安全可靠!部分设备误报拦截请通过!

应用详情

大家好,今天小编为大家分享关于怎么用gg修改器弄root_如何使用gg修改器?的内容,赶快来一起来看看吧。

背景

而我们的罪魁祸首其实就在这个new XStream这个方法中,我们的默认构造方法会调用下面的这个构造方法:

由于我们每次请求都会新创建一个Xstream对象,从而也会新创建一个ClassLoader,由于我们的ClassLoader的key是根据每个对象来算出来的hash值,如果每次都新创建,自然hash值不一样,从而导致我们有很多ClassLoader指向XStream这个class。为什么SystemDictionary的大小会影响我们GC时间呢?

想象一下这么个情况,我们加载了一个类,然后构建了一个对象(这个对象在eden里构建)当一个属性设置到这个类(static变量)里,如果gc发生的时候,这个对象是不是要被找出来标活才行,那么自然而然我们加载的类肯定是我们一项重要的gc root,这样SystemDictionary就成为了gc过程中的被扫描对象了。

我们的class信息是被分配在哪里的呢?在java7的话是在永久代,在java8就来到了元数据空间也就是我们的堆上,所以我们的young gc的时候是不会回收我们的class信息的,那么我们怎么解决这个问题呢?

但是我们这个问题不应该通过垃圾收集去解决,而是应该从根源上去解决,那就是不能使用默认的XStream构造函数,而是需要使用固定ClassLoader的构造函数。

经过修改之后上线,经过观察,没有出现慢GC的现象。

最后

经过这次排查的经验来看,遇到GC问题尤其是那种比较不常见的,真的是非常难搞,你可能需要对这个问题进行系统的学习,以及大量的查找资料才能找到原因,我在排查这个问题的时候掉了不少头发。在这里记录一下这个经验,希望对大家以后的一些排查能有帮助。

原文链接:https://mp.weixin./s/C-IRG6i55ow8CExMVShbeQ

如果大家觉得这篇文章对你有帮助,你的关注和转发是对我最大的支持,O(∩_∩)O:

以上就是关于怎么用gg修改器弄root_如何使用gg修改器?的全部内容,感谢大家的浏览观看,如果你喜欢本站的文章可以CTRL+D收藏哦。

相关文章

热门下载

大家还在搜