[
https://issues.apache.org/jira/browse/FLINK-37289?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated FLINK-37289:
-----------------------------------
Labels: pull-request-available (was: )
> Resolve JVM bytecode size limit exceeded in <init> method due to excessive
> field initializations in SQL job
> -----------------------------------------------------------------------------------------------------------
>
> Key: FLINK-37289
> URL: https://issues.apache.org/jira/browse/FLINK-37289
> Project: Flink
> Issue Type: Bug
> Affects Versions: 1.16.1
> Reporter: Xinglong Wang
> Priority: Major
> Labels: pull-request-available
>
> h3. Problem Description
> The SQL job encounters issues due to having too many fields in the DML
> operations, such as a job which has over 2,000 fields. This results in the
> code generation process creating an initialization block that needs to
> initialize these fields and some auxiliary intermediate variables, totaling
> over 20,000 members. Consequently, the bytecode for the {{<init>}} method
> exceeds the JVM's single method limit of 64KB, resulting in the following
> error:
> {code:java}
> Caused by: org.codehaus.janino.InternalCompilerException: Compiling
> "StreamExecCalc$127849": Code of method
> "<init>([Ljava/lang/Object;Lorg/apache/flink/streaming/runtime/tasks/StreamTask;Lorg/apache/flink/streaming/api/graph/StreamConfig;Lorg/apache/flink/streaming/api/operators/Output;Lorg/apache/flink/streaming/runtime/tasks/ProcessingTimeService;)V"
> of class "StreamExecCalc$127849" grows beyond 64 KB
> at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:382)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:237)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:465)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:216)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:207)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:80)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:75)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.table.runtime.generated.CompileUtils.doCompile(CompileUtils.java:104)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.table.runtime.generated.CompileUtils.lambda$compile$0(CompileUtils.java:92)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4864)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache.get(LocalCache.java:3962)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4859)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.table.runtime.generated.CompileUtils.compile(CompileUtils.java:92)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> ... 32 more
> Caused by: org.codehaus.janino.InternalCompilerException: Code of method
> "<init>([Ljava/lang/Object;Lorg/apache/flink/streaming/runtime/tasks/StreamTask;Lorg/apache/flink/streaming/api/graph/StreamConfig;Lorg/apache/flink/streaming/api/operators/Output;Lorg/apache/flink/streaming/runtime/tasks/ProcessingTimeService;)V"
> of class "StreamExecCalc$127849" grows beyond 64 KB
> at org.codehaus.janino.CodeContext.makeSpace(CodeContext.java:1048)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.CodeContext.write(CodeContext.java:925)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.writeOpcode(UnitCompiler.java:12291)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.getfield(UnitCompiler.java:11974)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4470)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$7700(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16$1.visitFieldAccess(UnitCompiler.java:4405)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16$1.visitFieldAccess(UnitCompiler.java:4400)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$FieldAccess.accept(Java.java:4310)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4400)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4396)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$Lvalue.accept(Java.java:4148)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compileGet2(UnitCompiler.java:4461)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$7500(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16$1.visitAmbiguousName(UnitCompiler.java:4403)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16$1.visitAmbiguousName(UnitCompiler.java:4400)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$AmbiguousName.accept(Java.java:4224)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4400)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$16.visitLvalue(UnitCompiler.java:4396)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$Lvalue.accept(Java.java:4148)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compileGet(UnitCompiler.java:4396)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler.compileGetValue(UnitCompiler.java:5662)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler.compileContext2(UnitCompiler.java:4351)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$6800(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$15$1.visitArrayAccessExpression(UnitCompiler.java:4272)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$15$1.visitArrayAccessExpression(UnitCompiler.java:4268)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$ArrayAccessExpression.accept(Java.java:4605)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$15.visitLvalue(UnitCompiler.java:4268)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$15.visitLvalue(UnitCompiler.java:4264)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$Lvalue.accept(Java.java:4148)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler.compileContext(UnitCompiler.java:4264)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:3789)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$6100(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$13.visitAssignment(UnitCompiler.java:3754)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$13.visitAssignment(UnitCompiler.java:3734)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$Assignment.accept(Java.java:4477)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3734)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2360)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$1800(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$6.visitExpressionStatement(UnitCompiler.java:1494)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$6.visitExpressionStatement(UnitCompiler.java:1487)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$ExpressionStatement.accept(Java.java:2874)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1567)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1553)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$1700(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1493)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler$6.visitBlock(UnitCompiler.java:1487)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$Block.accept(Java.java:2779)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1546)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$1400(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$6.visitInitializer(UnitCompiler.java:1490)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$6.visitInitializer(UnitCompiler.java:1487)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.Java$Initializer.accept(Java.java:2048)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1487)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler.initializeInstanceVariablesAndInvokeInstanceInitializers(UnitCompiler.java:7580)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3378)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:834)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:432)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.access$400(UnitCompiler.java:215)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:411)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.UnitCompiler$2.visitPackageMemberClassDeclaration(UnitCompiler.java:406)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.Java$PackageMemberClassDeclaration.accept(Java.java:1414)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:406)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.UnitCompiler.compileUnit(UnitCompiler.java:378)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:237)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.codehaus.janino.SimpleCompiler.compileToClassLoader(SimpleCompiler.java:465)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:216)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.janino.SimpleCompiler.cook(SimpleCompiler.java:207)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:80)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at org.codehaus.commons.compiler.Cookable.cook(Cookable.java:75)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.table.runtime.generated.CompileUtils.doCompile(CompileUtils.java:104)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.table.runtime.generated.CompileUtils.lambda$compile$0(CompileUtils.java:92)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4864)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3529)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2278)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2155)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2045)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache.get(LocalCache.java:3962)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.shaded.guava30.com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4859)
> ~[flink-dist-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> at
> org.apache.flink.table.runtime.generated.CompileUtils.compile(CompileUtils.java:92)
> ~[flink-table-runtime-1.16.1-mt001-SNAPSHOT.jar:1.16.1-mt001-SNAPSHOT]
> ... 32 more {code}
>
> h3. Explanation of the {{<init>}} Method
> * {*}{{<init>}} Method{*}: In Java bytecode, each constructor is represented
> as a special method named {{{}<init>{}}}.
> * {*}Order of Instance Initialization{*}: The Java compiler weaves the
> initialization logic into the {{<init>}} method in the following order:
> ** a. Calls the superclass constructor (calls the default no-argument
> constructor if none is explicitly called).
> ** b. Initializes instance variables.
> ** c. Executes instance initialization blocks.
> ** d. Executes the actual code of the constructor.
> * {*}Bytecode Generation{*}: The compiler inserts all this initialization
> logic (instance variable initialization and instance initialization blocks)
> into the beginning of the {{<init>}} method, after the call to the superclass
> constructor but before the constructor's own code.
> * {*}Impact on {{<init>}} Method Size{*}: Therefore, even if the constructor
> itself has little code, having a large number of instance variable
> initializations or complex instance initialization blocks will increase the
> bytecode size of the {{<init>}} method.
> h3. Fix
> The initial logic in the initialization block, when translated into bytecode,
> is executed via {{putfield}} instructions. The solution is to segment the
> numerous {{putfield}} instructions into smaller blocks. For example, group
> every 1,000 initialization statements into a private method, then call these
> private methods within the initialization block. This transforms the
> initialization block into a series of {{invokespecial}} instructions, which
> are fewer in number.
> For a detailed explanation, refer to the demonstration at
> [https://godbolt.org/z/q9d1ncTrE].
--
This message was sent by Atlassian Jira
(v8.20.10#820010)