Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

7zip压缩,类加载,构造方法性能好像有明显变化? #225

Closed
TragedyGo opened this issue Jan 10, 2018 · 3 comments
Closed

Comments

@TragedyGo
Copy link

TragedyGo commented Jan 10, 2018

各位有遇到性能问题?
7zip压缩后,我怀疑java字节码对齐是不是和以前zip不一样了。导致jvm加载类整体二进制有区别(参考方法区或者引导方法索引,和常量池的变化)?
//////////////////////////////////////////////////////////////////////////////////////////////
但上面我一直以为是冷启动(5.0以下)或者新安装(5.0以上)压缩格式不同造成的。
但我热启动也跟着拖慢了。我Activity类中也有内部类,也成员变量
不知问题所在

@simpleton
Copy link
Collaborator

你猜的应该不对,因为dex是解压以后运行的,而且真正运行的是odex和oat文件。

使用7zip冷启动确实会慢,是因为需要一次完整的解压,而非压缩的话只需要mmap。

这里里面有一些讨论,ref: #84

但我没有具体做过benchmark,欢迎补充数据和进一步讨论。

@TragedyGo
Copy link
Author

emmm...我也是这样认为的,但odex和oat文件格式会做真正重组么?
我怕,他自己只是做文件格式索引。
如oat
A类在oat文件offset[#58]size[#400],然后这400的数据会有字节码优化?大家都知道java是静态语言来的,也就是编译后生成字节码,你打压缩的时候在这个阶段已经对齐了,后面到Android设备jvm会改变这个过程?
所以我说这个400是7zip压缩后的数据还是重组的数据

@simpleton
Copy link
Collaborator

https://source.android.com/devices/tech/dalvik/configure

读一下官方文档先,你有些概念搞错了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants