Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ASM 5.0.3 JSRInlinerAdapter可快速填充代码缓存内存_Java_Assembly_Jvm_Java Bytecode Asm - Fatal编程技术网

Java ASM 5.0.3 JSRInlinerAdapter可快速填充代码缓存内存

Java ASM 5.0.3 JSRInlinerAdapter可快速填充代码缓存内存,java,assembly,jvm,java-bytecode-asm,Java,Assembly,Jvm,Java Bytecode Asm,在使用ASM 5.0.3/java 1.7_80/Apache Tomcat-6.0.35检测java web应用程序时,我遇到了一个奇怪的问题 在服务器启动后的1或2天内,代码缓存内存将被完全填满100%,并且从不进行垃圾收集。在没有检测的情况下也可以验证这一点,检测工作正常&代码缓存永远不会填满100% 我在检测代码中使用了“JSRInlinerAdapter”。因为我的应用程序包含从48到51的所有类文件版本(1.4到1.7) 我的问题是-当JIT编译器编译这些方法时,代码缓存内存是否充满

在使用ASM 5.0.3/java 1.7_80/Apache Tomcat-6.0.35检测java web应用程序时,我遇到了一个奇怪的问题

在服务器启动后的1或2天内,代码缓存内存将被完全填满100%,并且从不进行垃圾收集。在没有检测的情况下也可以验证这一点,检测工作正常&代码缓存永远不会填满100%

我在检测代码中使用了“JSRInlinerAdapter”。因为我的应用程序包含从48到51的所有类文件版本(1.4到1.7)

我的问题是-当JIT编译器编译这些方法时,代码缓存内存是否充满了内联方法?(因为我使用了JSRInlinerAdapter)

其他信息

我使用以下VM参数

-Djava.util.Arrays.useLegacyMergeSort=true 
-XX:+UseCodeCacheFlushing 
-Djsse.enableCBCProtection=false 
-XX:NewSize=384m 
-XX:MaxNewSize=384m 
-XX:PermSize=384m 
-XX:MaxPermSize=384m 
-XX:+DisableExplicitGC 
-XX:MaxGCPauseMillis=400 
-XX:MaxGCMinorPauseMillis=100 
-XX:+UseG1GC 
-XX:+UnlockDiagnosticVMOptions 
-XX:+G1SummarizeConcMark 
-XX:+UseTLAB -XX:NewRatio=3 
-XX:+UseCMSInitiatingOccupancyOnly 
-XX:InitiatingHeapOccupancyPercent=30 
-XX:ConcGCThreads=5 
-XX:ParallelGCThreads=20 
-XX:+UseFastAccessorMethods 
-XX:+UseAdaptiveGCBoundary 
-XX:+UseStringCache 
-XX:+AggressiveOpts 
-Xms1536m 
-Xmx1536m 

快速填充代码缓存的原因是什么?

不要使用
-Djava.util.Arrays.useLegacyMergeSort=true
。如果比较器损坏,请修复该比较器。否则,您只修复了一个症状,但可能有任意数量的其他未被注意到的bug。除此之外,为什么要使用JSRInlinerAdapter?你的理由实际上没有解释任何事情。嗨,霍尔格,感谢你对
java.util.Arrays.useLegacyMergeSort
的输入。使用JSRInlinerAdapter的另一个原因是,我的应用程序包含从版本48到51的类文件。我向类中的所有方法注入一些字节码(使用AdviceAdapter)以查找方法的执行时间。正如我所看到的,类文件版本<=49包含JSR/RET指令,这可能导致stackmap验证时出现任何问题。这就是使用“JSRInlinerAdapter”的原因。如果类文件的版本