我们一般在ksp创建文件需要在KSVisitorVoid里面的各个函数里创建,但是特殊情况需要生成其他类,如果没在KSVisitorVoid函数里面使用codeGenerator.createNewFile编译的时候就会卡主,从而产生异常:
java.lang.OutOfMemoryError: Java heap space
解决办法
把codeGenerator.createNewFile逻辑代码放到Thread线程里面
private fun generate() {
thread(true){ // 使用线程创建,就不会卡死了
val packageName = "com.ksp.test"
val className = "Test"
warn(codeGenerator)
warn(codeGenerator::class.java)
val file = codeGenerator.createNewFile(
Dependencies(true),
packageName,
className
)
file.appendText("package $packageName\n\n")
file.appendText("class $className{\n")
file.appendText("\n")
file.appendText(" }\n")
file.flush()
file.close()
}
}