1import{_ as a,c as s,b as n,o as i}from"./app-CNefOTx1.js";const t={};function p(l,e){return i(),s("div",null,e[0]||(e[0]=[n(`<h2 id="_5-1-éé级对象" tabindex="-1"><a class="header-anchor" href="#_5-1-éé级对象"><span>5.1 éé级对象</span></a></h2><p>éé级对象æ¯é£äºæé éè¦è¾å¤åå§åè¿ç¨ï¼æè 使ç¨è¿ç¨ä¸ä¼åç¼åçå¯¹è±¡ãæ¯å¦ï¼çJacksonçObjectMapperç±»å®ä¹</p><div class="language-plaintext line-numbers-mode" data-ext="plaintext" data-title="plaintext"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>public class ObjectMapper extends ObjectCodec implements Versioned, Serializable {</span></span> 2<span class="line"><span> //忽ç¥å ¶ä»ä»£ç </span></span> 3<span class="line"><span> protected SerializerFactory _serializerFactory;</span></span> 4<span class="line"><span> protected DeserializationConfig _deserializationConfig;</span></span> 5<span class="line"><span> protected DefaultDeserializationContext _deserializationContext;</span></span> 6<span class="line"><span> protected Set<Object _registeredModuleTypes;</span></span> 7<span class="line"><span> protected final ConcurrentHashMap<JavaType, JsonDeserializer<Object _rootDeserializers;
7</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>å¦ä¸ç±»æè¾å¤éè¦åå§ååéï¼å°¤å ¶æ¯éåç±»åãå¦æä½ çåå§åæé 彿°ï¼å°±è½çåºæ¥ï¼å°¤å ¶æ¯_rootDeserializersåéï¼åå§åä»£ç æ¯</p><div class="language-plaintext line-numbers-mode" data-ext="plaintext" data-title="plaintext"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span> protected ObjectMapper(ObjectMapper src) {</span></span> 8<span class="line"><span> this._rootDeserializers = new ConcurrentHashMap(64, 0.6F, 2);//忽ç¥å ¶ä»}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><p>è¿äºéåç±»éå¸¸ç¨æ¥ä½ä¸º<code>ç¼å²</code>ï¼ç¼å<code>é¢å¤ç</code>æè <code>é¢ç¼è¯</code>ç对象ï¼ä»¥æé«æ§è½ã å¦ææ¯æ¬¡ä½¿ç¨æ¶åï¼é½æå»ºObjectMapperå°å¯¼è´è¿äºä¼åææ¯å¤±æ</p><p>幸è¿çæ¯ï¼Jacksonå¨å®ç½ææ¡£å·²ç»è¯´æå°æ´ä¸ªç³»ç»é常åªéè¦ä¸ä¸ªObjectMapperå®ä¾å°±å¯ä»¥äºã</p><p>å¨ä»£ç ä¸ï¼å¦ææééçº§å¯¹è±¡å½æè½»é级对象使ç¨ï¼å¨æ¹æ³ä¸è°ç¨ä¸æ¬¡å°±æé 䏿¬¡ï¼é£ä¹æ§è½ä¼æ¥å§ä¸éï¼ä¸æ¹é¢ï¼æé è¿äºéé级对象éè¦è¾å¤åå§åè¿ç¨ï¼å¦å¤æéè¦ç影忝ï¼éé级对象ä¼é常å¨åå¤ä½¿ç¨ä¸ä¼ç¼åä¸äºä¸é´è®¡ç®è¿ç¨ï¼ObjectMapperä¼ç¼åJsonDeserializerå° _rootDeserializersä¸ï¼éé级对象é常å å«Mapï¼Setï¼ThreadLocalè¿äºæååé, æè å å«IO龿¥ã è°ç¨ä¸æ¬¡çæ¶åå°±æé 䏿¬¡ä¼å¯¼è´åºç¨æ§è½æ¥å§åä½</p><p>å¦ä¸æ¯ObjectMapperæ¯æ¬¡ä½¿ç¨æ¶åçæ§è½</p><div class="language-plaintext line-numbers-mode" data-ext="plaintext" data-title="plaintext"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>@BenchmarkMode(Mode.Throughput)</span></span> 9<span class="line"><span>@Warmup(iterations = 5)</span></span> 10<span class="line"><span>@Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)</span></span> 11<span class="line"><span>@Threads(1)</span></span> 12<span class="line"><span>@Fork(1)</span></span> 13<span class="line"><span>@OutputTimeUnit(TimeUnit.MILLISECONDS)</span></span> 14<span class="line"><span>@State(Scope.Benchmark)</span></span> 15<span class="line"><span>public class HeavyweightObjectTest {/*éç¨*/</span></span> 16<span class="line"><span> ObjectMapper objectMapper = new ObjectMapper();</span></span> 17<span class="line"><span> Data data = null;</span></span> 18<span class="line"><span> @Benchmark</span></span> 19<span class="line"><span> public Data createNew() throws IOException {/*æ¯æ¬¡é½æé */</span></span> 20<span class="line"><span> ObjectMapper encodeMapper = new ObjectMapper();</span></span> 21<span class="line"><span> String json = encodeMapper.writeValueAsString(data);</span></span> 22<span class="line"><span> ObjectMapper decodeMapper = new ObjectMapper();</span></span> 23<span class="line"><span> Data myData = decodeMapper.readValue(json,Data.class);return myData;</span></span> 24<span class="line"><span> }</span></span> 25<span class="line"><span> @Benchmark</span></span> 26<span class="line"><span> public Data reused() throws IOException {</span></span> 27<span class="line"><span> String json = objectMapper.writeValueAsString(data);</span></span> 28<span class="line"><span> Data myData = objectMapper.readValue(json,Data.class);return myData;</span></span> 29<span class="line"><span> }</span></span> 30<span class="line"><span> @Setup</span></span> 31<span class="line"><span> public void init(){</span></span> 32<span class="line"><span> data = new Data();</span></span> 33<span class="line"><span> data.setAge(18);</span></span> 34<span class="line"><span> data.setId(123);</span></span> 35<span class="line"><span> data.setName("lijiazhi");}</span></span> 36<span class="line"><span> public static void main(String[] args) throws RunnerException {</span></span> 37<span class="line"><span> Options opt = new OptionsBuilder().include(HeavyweightObjectTest.class.getSimpleName()).forks(1).build();new Runner(opt).run();}}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>æµè¯ç»æï¼éç¨éé级对象æ§è½ä¼å¿éå¸¸ææ¾</p><div class="language-plaintext line-numbers-mode" data-ext="plaintext" data-title="plaintext"><button class="copy" title="Copy code" data-copied="Copied"></button><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code><span class="line"><span>Benchmark Mode Samples Score Score error Units</span></span> 38<span class="line"><span>c.i.c.c.HeavyweightObjectTest.createNew thrpt 5 38.334 2.962 ops/ms</span></span> 39<span class="line"><span>c.i.c.c.HeavyweightObjectTest.reused thrpt 5 2316.950 23.8
3907 ops/ms</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,12)]))}const r=a(t,[["render",p],["__file","index.html.vue"]]),d=JSON.parse('{"path":"/article/performance/policy_heavyobject/","title":"æ§è½ä¼å-éé级对象","lang":"en-US","frontmatter":{"title":"æ§è½ä¼å-éé级对象","tags":["æ§è½","æ°ä¹¦"],"createTime":"2026/08/21 14:36:15","permalink":"/article/performance/policy_heavyobject/","description":"5.1 éé级对象 éé级对象æ¯é£äºæé éè¦è¾å¤åå§åè¿ç¨ï¼æè
使ç¨è¿ç¨ä¸ä¼åç¼åçå¯¹è±¡ãæ¯å¦ï¼çJacksonçObjectMapperç±»å®ä¹ å¦ä¸ç±»æè¾å¤éè¦åå§ååéï¼å°¤å
¶æ¯éåç±»åãå¦æä½ çåå§åæé 彿°ï¼å°±è½çåºæ¥ï¼å°¤å
¶æ¯_rootDeserializersåéï¼åå§åä»£ç æ¯ è¿äºéåç±»éå¸¸ç¨æ¥ä½ä¸ºç¼å²ï¼ç¼åé¢å¤çæè
é¢ç¼è¯ç对象ï¼ä»¥æé«æ§è½...","head":[["meta",{"property":"og:url","content":"http://ibeetl.com/article/performance/policy_heavyobject/"}],["meta",{"property":"og:site_name","content":"é²å¤§èµ"}],["meta",{"property":"og:title","content":"æ§è½ä¼å-éé级对象"}],["meta",{"property":"og:description","content":"5.1 éé级对象 éé级对象æ¯é£äºæé éè¦è¾å¤åå§åè¿ç¨ï¼æè
使ç¨è¿ç¨ä¸ä¼åç¼åçå¯¹è±¡ãæ¯å¦ï¼çJacksonçObjectMapperç±»å®ä¹ å¦ä¸ç±»æè¾å¤éè¦åå§ååéï¼å°¤å
¶æ¯éåç±»åãå¦æä½ çåå§åæé 彿°ï¼å°±è½çåºæ¥ï¼å°¤å
¶æ¯_rootDeserializersåéï¼åå§åä»£ç æ¯ è¿äºéåç±»éå¸¸ç¨æ¥ä½ä¸ºç¼å²ï¼ç¼åé¢å¤çæè
é¢ç¼è¯ç对象ï¼ä»¥æé«æ§è½..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"en-US"}],["meta",{"property":"og:updated_time","content":"2026-08-21T06:57:39.000Z"}],["meta",{"property":"article:tag","content":"æ§è½"}],["meta",{"property":"article:tag","content":"æ°ä¹¦"}],["meta",{"property":"article:modified_time","content":"2026-08-21T06:57:39.000Z"}],["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"æ§è½ä¼å-éé级对象\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2026-08-21T06:57:39.000Z\\",\\"author\\":[]}"]]},"headers":[],"readingTime":{"minutes":1.94,"words":581},"git":{"updatedTime":1787295459000,"contributors":[{"name":"lijiazhi","username":"lijiazhi","email":"[email protected]","commits":1,"avatar":"https://gravatar.com/avatar/1b5114831459724ad4acc394423b4b48ecfa4a7e0659fbe07a0ce5181a1050a7?d=retro"}]},"autoDesc":true,"filePathRelative":"article/æ§è½/heavyweight.md","categoryList":[{"id":"92a2b5","sort":10000,"name":"article"},{"id":"afdb50","sort":10004,"name":"æ§è½"}]}');export{r as comp,d as data};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.