旅游管理网站业务模块东莞关键词自动排名
旅游管理网站业务模块,东莞关键词自动排名,青岛圭谷网站建设公司怎么样,手工制作大全图片简单Intellij 的Java/安卓工具链有着一种不可持续性#xff0c;这种不可持续性体现在多个方面。
首先是不可持续运行。IDEA 使用时间越长#xff0c;内存占用越大#xff0c;从不主动释放。运行时间越长#xff0c;日志越多#xff0c;从不主动清理。
然后是不完整的开源这种不可持续性体现在多个方面。
首先是不可持续运行。IDEA 使用时间越长内存占用越大从不主动释放。运行时间越长日志越多从不主动清理。
然后是不完整的开源从源码编译时需要下载更多依赖。而研究更多依赖就要消耗更多的精力与资源…… 合理选择 IDEA 与 Gradle 版本
Android studio 是闭源的工具。它使用gradle构建安卓项目。gradle又是从网络下载下来的至少有三个部分、三种语言。
Android SDK 也是闭源的。并且还附加了使用协议只能用于为安卓兼容的设备开发app。
IDEA 的 Android Support Plugin 是开源的效果和 Android studio 基本一致。但仅有内置的 Android 插件还不行首次编译安卓项目时 IDEA 还需要下载许多资源。
Gradle 的中文意译当为 —— 小混球儿。它也是开源的。但是兼容性很差需要配合特定版本的 IDEA 才能正常运行。
Gradle wrapper 7比如 gradle-7.3.3-bin 相比于版本 6 增量编译更快。原本十秒优化至三四秒甚至1秒。但是版本 7 不支持 IDEA 2023 以前的版本所报错误匪夷所思
Querying the mapped value of map … before task ‘:app:compileDebugJavaWithJavac’ has completed is not supported CSDN博客
Android StudioGradle project sync failed_unable to find method java.lang.string org.gradle-CSDN博客
如果升级最新版本的 IDEA 2023那么恭喜你这个问题不出现了。不是因为解决了而是免费的 IDEA 2023 压根不让你玩安卓需要付费解锁 ultimate 。 如果尝试自行编译 gradle 那么你会遇到更多问题占用更多c盘空间。
Gradle / Can not build gradle from source code · Issue #5282 · gradle/gradle
只能用不新不旧的 IDEA 2023.1 。几番测试下来已经用了 c 盘十个G了……
不新不旧的 IDEA 内置不新不旧的 open jdk 17。这玩意儿最恶心在于强制模块化许多旧项目需要添加许许多多的 jvm 参数才能编译
jdk17运行程序报错module java.base does not open java.lang.reflect to unnamed module _module java.base does not opens java.lang.reflect-CSDN博客
上面博客是将启动参数放到设置里。我参考的是博客写入 gradle.properties。
如果编译过程使用了gradle插件可能还需要更多参数比如我的改成
org.gradle.jvmargs-Xmx2048m --add-exportsjava.base/sun.nio.chALL-UNNAMED --add-opensjava.base/java.langALL-UNNAMED --add-opensjava.base/java.lang.reflectALL-UNNAMED --add-opensjava.base/java.ioALL-UNNAMED --add-exportsjdk.unsupported/sun.miscALL-UNNAMED --add-opensjdk.compiler/com.sun.tools.javac.modelALL-UNNAMED --add-opensjdk.compiler/com.sun.tools.javac.processingALL-UNNAMED --add-opensjdk.compiler/com.sun.tools.javac.treeALL-UNNAMED \\ --add-opensjdk.compiler/com.sun.tools.javac.utilALL-UNNAMED \\ --add-opensjdk.compiler/com.sun.tools.javac.codeALL-UNNAMED 这么一长串启动参数每一个add-opens都要试出来的谁懂啊。也可降级用旧的 jvm 运行 gradle。 解决log无底洞
运行 gradle deamon 会持续记录log这些日志累积可达 10G、甚至百G从不自动清理。
Gradle / Gradle logging hygiene · Issue #2688 · gradle/gradle
这个问题仍然存在按照issue中的方法提高 Log 等级、自定义任务等只能缓解无法根治。
我的解决方法很有技巧性配合了符号链接(Symbolic Link) 与 用户空间文件系统Filesystem in Userspace。
用户空间文件系统Filesystem in Userspace 是虚拟的文件系统但可以挂载。第三方程序感觉起来无异于真实文件系统。windows上的fuse是dokanky持续开源、性能好、上手简单借鉴官方mirror.c镜像文件系统。
dokany mirror.c github
自己写的 fuse 可以移花接木拦截修改令行禁止 可以直接禁止创建log文件但是那样 gradle deamon 启动崩溃。 可以禁止写入但守护进程陷入死循环。 于是只能循环写入只允许写入 1kb超出部分从头写入。
符号链接(Symbolic Link) 有别于普通的lnk快捷方式会被第三方程序识别为目录从而达到移花接木的效果。
使用指令创建符号链接 mklink /D deamon V:\deamonX其中 V:\deamonX 是镜像文件系统强制IDEA打印日志时循环写入。
为什么不直接将 fuse 挂载到 deamon 呢因为 dokany 一个线程只能有一个挂载点为了节省性能我用一个盘符为所有磁盘开启镜像文件系统并用不同目录区分不同功能 J:\c\ 代表 c 盘回收站内容解码了文件名乱码可正常打开。其中双横杠开头的文件夹代表特殊功能区域
– encrypt – 是对该磁盘回收站内容的加密镜像。调用 openssl aes 加密 – entropy – 是对该磁盘所有文件的加密镜像以及加密文件的解密镜像。 – equator – 是对该磁盘所有文件的原始镜像添加了上述日志写入的限制。
这样我就能用一个挂载点实现许许多多不同的功能。
再配合ahk用户脚本引擎添加快捷键可以一键往返真实目录与镜像目录任意穿梭方便无比。 解决内存无底洞
其实 c 调用 java 方法可以归还内存实现零泄漏、占用零增长的。不知为何 IDEA 只能持续占用内存从不归还。
编译几次就整个重启还可以结束 gradle 守护进程保留IDEA本体。本体重启守护只需几十秒很值只需 windows的任务管理器。没谁了吧mac、linux、安卓哪一个这么能打
其中图标写着JB二字的进程里就住着我们的小混球gradle等他增长到1gbidea本体4gb的时候就可以结束他开启新的轮回实现可持续性编译
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/86567.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!