当前位置: 首页 > news >正文

做任务领黄钻的网站沧州网站网站建设

做任务领黄钻的网站,沧州网站网站建设,wordpress代码优化插件,十里河网站建设公司Intellij 的Java/安卓工具链有着一种不可持续性,这种不可持续性体现在多个方面。 首先是不可持续运行。IDEA 使用时间越长,内存占用越大,从不主动释放。运行时间越长,日志越多,从不主动清理。 然后是不完整的开源&am…

Intellij 的Java/安卓工具链有着一种不可持续性,这种不可持续性体现在多个方面。

首先是不可持续运行。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 Studio:Gradle 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-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED  --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED  --add-opens=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED   --add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED \\ --add-opens=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED \\ --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-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 可以移花接木,拦截修改,令行禁止:

  1. 可以直接禁止创建log文件,但是那样 gradle deamon 启动崩溃。

  2. 可以禁止写入,但守护进程陷入死循环。

  3. 于是只能循环写入:只允许写入 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,等他增长到1gb,idea本体4gb的时候就可以结束他,开启新的轮回,实现可持续性编译!

http://www.yayakq.cn/news/978237/

相关文章:

  • 安阳市网站建设aspnet做网站视频教程
  • 如何建设黔货出山电子商务网站广州白云区防疫工作
  • 响应式网站如何实现前端学什么
  • 在线生成个人网站wordpress如何接入支付
  • html5 企业国际网站 多国家 多语言 源代码 cookies安徽搜索引擎推广平台
  • 广东深圳招聘信息最新招聘2022信息流优化师需要具备哪些能力
  • 怎样申请网站注册国内适合个人做外贸的网站有哪些
  • 网站怎么做分时本科自考需要考哪些科目
  • 广安网站建设兼职什么网比较好
  • 佳木斯网站设计站长工具问答网站
  • 泰安个人代做网站wordpress在 分栏
  • 查企业信息的国家网站济南建设厅网站
  • 手机微网站建设案例及报告jsp做的网站可以用的
  • 浙江城乡住房建设厅网站首页网页登录界面制作
  • 营销型网站是通过对网局域网网站建设需要什么条件
  • 自己做网站怎么编代码网站快照长期不更新
  • 深圳电商网站开发想建立自己的网站
  • 模板式自助建站网站建设人员工资
  • 网站注册理由虚拟机wordpress教程视频
  • 网站建设合同交印花税么宁波江北区城市建设档案馆网站
  • 做衬衫的网站seo推广怎么做
  • 网站推广软件免费公众号开发框架
  • 乐清网站改版台州seo优化
  • 周口建设公司网站网站管理制度规范
  • 甘肃省住房与城乡建设部网站wordpress到服务器
  • 做网站就要租服务器网站扫码怎么做的
  • 网站建设维护单选题微信小程序怎么弄成二维码
  • 建设数码产品网站的策划书浏览网站 需要我安装wordpress
  • 盐城营销网站建设哪个网站可以做名片
  • 湖南品牌网站建设资海网络一年做多少网站