In addition to Weibo, there is also WeChat
Please pay attention
WeChat public account
Shulou
2025-01-18 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >
Share
Shulou(Shulou.com)06/03 Report--
In this issue, the editor will bring you an in-depth understanding of JVM bytecode enhancement technology. The article is rich in content and analyzed and described from a professional point of view. I hope you can get something after reading this article.
Brief introduction of JVM-- bytecode enhancement technology
Java bytecode enhancement refers to the modification and enhancement of Java bytecode after it is generated, which is equivalent to modifying the binaries of the application. The main purpose of Java bytecode enhancement is to reduce redundant code and improve performance.
The main steps to implement bytecode enhancement are:
1. Modify bytecode
Get the original bytecode in memory, and then modify its byte [] array through some tools such as ASM,Javaasist to get a new byte array.
2. Make the modified bytecode effective
There are two ways:
1) customize ClassLoader to load the modified bytecode
2) replace the original bytecode: when JVM loads the user's Class, intercept and return the modified bytecode, or use the Instrumentation.redefineClasses method to replace the original bytecode at run time
3. Two implementation mechanisms:
(1) by creating a subclass of the original class, the dynamically created class inherits the original class. The subclass name is prefixed with the original class name to avoid duplicate names. That's what Spring AOP uses.
(2) modify the bytecode of the original class directly. Class is used in the tracking process of the
4. There are two steps to implement bytecode enhancement:
(1) get the original bytecode in memory, then modify its byte [] array through some open source API to get a new byte [] array.
(2) load the new byte [] array into the PermGen area (that is, load the new byte [] array or replace the bytecode of the original class).
Interface BCInterface
Public interface BCInterface {void enhancement ();}
Implementation class BCEnhancement.java
Public class BCEnhancement implements BCInterface {public void enhancement () {System.out.println ("hello enhancement");}}
LogProxy.java
Import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class LogProxy implements InvocationHandler {private Object object; public Object getProxyObject (Object o) {object=o; try {return Proxy.newProxyInstance (this.getClass (). GetClassLoader (), o.getClass (). GetInterfaces (), this);} catch (IllegalArgumentException e) {throw new RuntimeException (e);}} public Object invoke (Object proxy, Method method, Object [] args) throws Throwable {System.out.println ("before invoke...") Object result= method.invoke (object,args); System.out.println ("after invoke..."); return result;}}
Test class Test.java
Public class Test {public static void main (String [] args) {LogProxy logProxy = new LogProxy (); System.setProperty ("sun.misc.ProxyGenerator.saveGeneratedFiles", "true"); BCInterface byteCodeEn = (BCInterface) logProxy.getProxyObject (new BCEnhancement ()); byteCodeEn.enhancement ();}}
Output:
Before invoke... hello enhancementafter invoke...
The above is the editor for you to share how to in-depth understanding of JVM bytecode enhancement technology, if you happen to have similar doubts, you might as well refer to the above analysis to understand. If you want to know more about it, you are welcome to follow the industry information channel.
Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.
Views: 0
*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.
Continue with the installation of the previous hadoop.First, install zookooper1. Decompress zookoope
"Every 5-10 years, there's a rare product, a really special, very unusual product that's the most un
© 2024 shulou.com SLNews company. All rights reserved.