Repository: apache/skywalking (language: python)

Issue:
No default constructor found.
Please answer these questions before submitting your issue.

### What version of sky-walking are you using?
3.2.5

### What version of your OS?
Fedora 26 x64

### What version of your JRE?
[soi@master target]$ java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

### What company or project?
[spring-boot-thymeleaf](https://github.com/kolorobot/spring-boot-thymeleaf)

### What did you do?
```shell
[soi@master target]$ java -javaagent:/home/soi/ops/skywalking/skywalking-agent/skywalking-agent.jar -jar spring-boot-thymeleaf-1.0.0-SNAPSHOT.war
DEBUG 2017-11-26 20:33:12 AgentPackagePath :  The beacon class location is jar:file:/home/soi/ops/skywalking/skywalking-agent/skywalking-agent.jar!/org/skywalking/apm/agent/core/boot/AgentPackagePath.class. 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.4.RELEASE)

2017-11-26 20:33:13.795  INFO 9839 --- [           main] pl.codeleak.demos.sbt.Application        : Starting Application v1.0.0-SNAPSHOT on master.soi.io with PID 9839 (/home/soi/java/spring-boot-thymeleaf/target/spring-boot-thymeleaf-1.0.0-SNAPSHOT.war started by soi in /home/soi/java/spring-boot-thymeleaf/target)
2017-11-26 20:33:13.799  INFO 9839 --- [           main] pl.codeleak.demos.sbt.Application        : No active profile set, falling back to default profiles: default
2017-11-26 20:33:14.325  INFO 9839 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1283bb96: startup date [Sun Nov 26 20:33:14 CST 2017]; root of context hierarchy
2017-11-26 20:33:16.888  INFO 9839 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8180 (http)
2017-11-26 20:33:16.903  INFO 9839 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2017-11-26 20:33:16.904  INFO 9839 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.15
2017-11-26 20:33:17.603  INFO 9839 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2017-11-26 20:33:17.604  INFO 9839 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3283 ms
2017-11-26 20:33:17.919  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'metricsFilter' to: [/*]
2017-11-26 20:33:17.919  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-11-26 20:33:17.919  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-11-26 20:33:17.919  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-11-26 20:33:17.920  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2017-11-26 20:33:17.924  INFO 9839 --- [ost-startStop-1] .s.DelegatingFilterProxyRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/*]
2017-11-26 20:33:17.924  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'webRequestLoggingFilter' to: [/*]
2017-11-26 20:33:17.924  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'applicationContextIdFilter' to: [/*]
2017-11-26 20:33:17.924  INFO 9839 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-11-26 20:33:18.002  WARN 9839 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'thymeleafTextTemplates' defined in URL [jar:file:/home/soi/java/spring-boot-thymeleaf/target/spring-boot-thymeleaf-1.0.0-SNAPSHOT.war!/WEB-INF/classes!/pl/codeleak/demos/sbt/thymeleaf/ThymeleafTextTemplates.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates]: No default constructor found; nested exception is java.lang.NoSuchMethodException: pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates.<init>()
2017-11-26 20:33:18.006  INFO 9839 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2017-11-26 20:33:18.543  INFO 9839 --- [           main] utoConfigurationReportLoggingInitializer : 

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2017-11-26 20:33:18.550 ERROR 9839 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'thymeleafTextTemplates' defined in URL [jar:file:/home/soi/java/spring-boot-thymeleaf/target/spring-boot-thymeleaf-1.0.0-SNAPSHOT.war!/WEB-INF/classes!/pl/codeleak/demos/sbt/thymeleaf/ThymeleafTextTemplates.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates]: No default constructor found; nested exception is java.lang.NoSuchMethodException: pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates.<init>()
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1155) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE]
	at pl.codeleak.demos.sbt.Application.main(Application.java:12) [classes!/:1.0.0-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_144]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_144]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [spring-boot-thymeleaf-1.0.0-SNAPSHOT.war:1.0.0-SNAPSHOT]
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [spring-boot-thymeleaf-1.0.0-SNAPSHOT.war:1.0.0-SNAPSHOT]
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [spring-boot-thymeleaf-1.0.0-SNAPSHOT.war:1.0.0-SNAPSHOT]
	at org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59) [spring-boot-thymeleaf-1.0.0-SNAPSHOT.war:1.0.0-SNAPSHOT]
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates]: No default constructor found; nested exception is java.lang.NoSuchMethodException: pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates.<init>()
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:85) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1147) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	... 25 common frames omitted
Caused by: java.lang.NoSuchMethodException: pl.codeleak.demos.sbt.thymeleaf.ThymeleafTextTemplates.<init>()
	at java.lang.Class.getConstructor0(Class.java:3082) ~[na:1.8.0_144]
	at java.lang.Class.getDeclaredConstructor(Class.java:2178) ~[na:1.8.0_144]
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:80) ~[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]
	... 26 common frames omitted
```


Discussion / hints:
This issue cause by weaved the Controller code. The Skywalking agent generate another constructor if the class has interceptor constructor.  and Spring create bean instance by default constructor if the bean has multi constructors.

Here is the code of spring class `org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor`
```
if (candidateConstructors == null) {
      ..... 
} else if (rawCandidates.length == 1 && rawCandidates[0].getParameterTypes().length > 0) {
     candidateConstructors = new Constructor<?>[] {rawCandidates[0]};
} else {
     candidateConstructors = new Constructor<?>[0];
}
```
@ycrxun This bug is a conflict, caused by our class manipulate mechanism. We will provide a fix in next version. 
fixed this issue in PR: #624, close it
@ycrxun #624 has been merged. If you are in hurry, please download the master branch, run `mvn clean package`. Then you can find the `apm-spring-core-patch-*.jar` in `/packages/skywalking-agent/plugins` folder. Copy it to and remove the old one in your agent folder. You can check the bug is fixed or not.

We tested it in our own sample applications. You can do yours. Make sure it is good enough for you.

Fix patch:
diff --git a/apm-protocol/apm-network/src/main/proto b/apm-protocol/apm-network/src/main/proto
index 0da9c8b3e111..d4da5699915e 160000
--- a/apm-protocol/apm-network/src/main/proto
+++ b/apm-protocol/apm-network/src/main/proto
@@ -1,1 +1,1 @@
-Subproject commit 0da9c8b3e111fb51c9f8854cae16d4519462ecfe
+Subproject commit d4da5699915ee52288f8ff1c954decf6363485bc
diff --git a/docs/en/api/jvm-protocol.md b/docs/en/api/jvm-protocol.md
index 2374a8d3a6f0..e22df4d51890 100644
--- a/docs/en/api/jvm-protocol.md
+++ b/docs/en/api/jvm-protocol.md
@@ -65,6 +65,11 @@ enum PoolType {
     SURVIVOR_USAGE = 3;
     PERMGEN_USAGE = 4;
     METASPACE_USAGE = 5;
+    ZHEAP_USAGE = 6;
+    COMPRESSED_CLASS_SPACE_USAGE = 7;
+    CODEHEAP_NON_NMETHODS_USAGE = 8;
+    CODEHEAP_PROFILED_NMETHODS_USAGE = 9;
+    CODEHEAP_NON_PROFILED_NMETHODS_USAGE = 10;
 }
 
 message GC {
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index cebc12bf8ca9..a5715bae9fd6 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -26,6 +26,7 @@
 * Optimize queryBasicTraces in TraceQueryEsDAO.
 * Fix `WebhookCallback` send incorrect messages, add catch exception for each callback HTTP Post.
 * Fix AlarmRule expression validation: add labeled metrics mock data for check.
+* Support collect ZGC memory pool metrics.
 
 #### UI
 
@@ -36,6 +37,8 @@
 * Refactor: update pagination style. No visualization style change.
 * Apply MQE on K8s layer UI-templates.
 * Fix icons display in trace tree diagram.
+* fix: update tooltip style to support multiple metrics scrolling view in a metrics graph.
+* Add a new widget to show jvm memory pool detail.
 
 #### Documentation
 
diff --git a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java
index eca95ce2e56e..bf7139014a04 100644
--- a/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java
+++ b/oap-server/analyzer/agent-analyzer/src/main/java/org/apache/skywalking/oap/server/analyzer/provider/jvm/JVMSourceDispatcher.java
@@ -174,6 +174,21 @@ private void sendToMemoryPoolMetricProcess(String service,
                 case CODE_CACHE_USAGE:
                     serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.CODE_CACHE_USAGE);
                     break;
+                case ZHEAP_USAGE:
+                    serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.ZHEAP_USAGE);
+                    break;
+                case COMPRESSED_CLASS_SPACE_USAGE:
+                    serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.COMPRESSED_CLASS_SPACE_USAGE);
+                    break;
+                case CODEHEAP_NON_NMETHODS_USAGE:
+                    serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.CODEHEAP_NON_NMETHODS_USAGE);
+                    break;
+                case CODEHEAP_PROFILED_NMETHODS_USAGE:
+                    serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.CODEHEAP_PROFILED_NMETHODS_USAGE);
+                    break;
+                case CODEHEAP_NON_PROFILED_NMETHODS_USAGE:
+                    serviceInstanceJVMMemoryPool.setPoolType(MemoryPoolType.CODEHEAP_NON_PROFILED_NMETHODS_USAGE);
+                    break;
             }
 
             serviceInstanceJVMMemoryPool.setInit(memoryPool.getInit());
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java
index 2e39271d9c9e..831e172f0453 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/source/MemoryPoolType.java
@@ -19,5 +19,15 @@
 package org.apache.skywalking.oap.server.core.source;
 
 public enum MemoryPoolType {
-    CODE_CACHE_USAGE, NEWGEN_USAGE, OLDGEN_USAGE, SURVIVOR_USAGE, PERMGEN_USAGE, METASPACE_USAGE
+    CODE_CACHE_USAGE,
+    NEWGEN_USAGE,
+    OLDGEN_USAGE,
+    SURVIVOR_USAGE,
+    PERMGEN_USAGE,
+    METASPACE_USAGE,
+    ZHEAP_USAGE,
+    COMPRESSED_CLASS_SPACE_USAGE,
+    CODEHEAP_NON_NMETHODS_USAGE,
+    CODEHEAP_PROFILED_NMETHODS_USAGE,
+    CODEHEAP_NON_PROFILED_NMETHODS_USAGE,
 }
diff --git a/oap-server/server-starter/src/main/resources/oal/java-agent.oal b/oap-server/server-starter/src/main/resources/oal/java-agent.oal
index d5381f4dca43..497f6c41bb0c 100644
--- a/oap-server/server-starter/src/main/resources/oal/java-agent.oal
+++ b/oap-server/server-starter/src/main/resources/oal/java-agent.oal
@@ -22,6 +22,17 @@ instance_jvm_memory_heap = from(ServiceInstanceJVMMemory.used).filter(heapStatus
 instance_jvm_memory_noheap = from(ServiceInstanceJVMMemory.used).filter(heapStatus == false).longAvg();
 instance_jvm_memory_heap_max = from(ServiceInstanceJVMMemory.max).filter(heapStatus == true).longAvg();
 instance_jvm_memory_noheap_max = from(ServiceInstanceJVMMemory.max).filter(heapStatus == false).longAvg();
+instance_jvm_memory_pool_code_cache = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.CODE_CACHE_USAGE).longAvg();
+instance_jvm_memory_pool_newgen = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.NEWGEN_USAGE).longAvg();
+instance_jvm_memory_pool_oldgen = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.OLDGEN_USAGE).longAvg();
+instance_jvm_memory_pool_survivor = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.SURVIVOR_USAGE).longAvg();
+instance_jvm_memory_pool_permgen = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.PERMGEN_USAGE).longAvg();
+instance_jvm_memory_pool_metaspace = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.METASPACE_USAGE).longAvg();
+instance_jvm_memory_pool_zheap = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.ZHEAP_USAGE).longAvg();
+instance_jvm_memory_pool_compressed_class_space = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.COMPRESSED_CLASS_SPACE_USAGE).longAvg();
+instance_jvm_memory_pool_codeheap_non_nmethods = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.CODEHEAP_NON_NMETHODS_USAGE).longAvg();
+instance_jvm_memory_pool_codeheap_profiled_nmethods = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.CODEHEAP_PROFILED_NMETHODS_USAGE).longAvg();
+instance_jvm_memory_pool_codeheap_non_profiled_nmethods = from(ServiceInstanceJVMMemoryPool.used).filter(poolType == MemoryPoolType.CODEHEAP_NON_PROFILED_NMETHODS_USAGE).longAvg();
 instance_jvm_young_gc_time = from(ServiceInstanceJVMGC.time).filter(phase == GCPhase.NEW).sum();
 instance_jvm_old_gc_time = from(ServiceInstanceJVMGC.time).filter(phase == GCPhase.OLD).sum();
 instance_jvm_normal_gc_time = from(ServiceInstanceJVMGC.time).filter(phase == GCPhase.NORMAL).sum();
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
index bc51b96b8b13..ed8b3e26e956 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
@@ -284,7 +284,7 @@
                   "y": 0,
                   "w": 8,
                   "h": 13,
-                  "i": "5",
+                  "i": "4",
                   "type": "Widget",
                   "widget": {
                     "title": "JVM Memory (MB)"
@@ -326,7 +326,88 @@
                   ]
                 },
                 {
-                  "x": 8,
+                  "x": 16,
+                  "y": 0,
+                  "w": 8,
+                  "h": 13,
+                  "i": "5",
+                  "type": "Widget",
+                  "widget": {
+                    "title": "JVM Memory Detail (MB)"
+                  },
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": true,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "metricConfig": [
+                    {
+                      "label": "CodeCache"
+                    },
+                    {
+                      "label": "NewGen"
+                    },
+                    {
+                      "label": "OldGen"
+                    },
+                    {
+                      "label": "Survivor"
+                    },
+                    {
+                      "label": "PermGen"
+                    },
+                    {
+                      "label": "Metaspace"
+                    },
+                    {
+                      "label": "ZHeap"
+                    },
+                    {
+                      "label": "Compressed Class Space"
+                    },
+                    {
+                      "label": "CodeHeap 'non-nmethods'"
+                    },
+                    {
+                      "label": "CodeHeap 'profiled nmethods'"
+                    },
+                    {
+                      "label": "CodeHeap 'non-profiled nmethods'"
+                    }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "instance_jvm_memory_pool_code_cache/1048576",
+                    "instance_jvm_memory_pool_newgen/1048576",
+                    "instance_jvm_memory_pool_oldgen/1048576",
+                    "instance_jvm_memory_pool_survivor/1048576",
+                    "instance_jvm_memory_pool_permgen/1048576",
+                    "instance_jvm_memory_pool_metaspace/1048576",
+                    "instance_jvm_memory_pool_zheap/1048576",
+                    "instance_jvm_memory_pool_compressed_class_space/1048576",
+                    "instance_jvm_memory_pool_codeheap_non_nmethods/1048576",
+                    "instance_jvm_memory_pool_codeheap_profiled_nmethods/1048576",
+                    "instance_jvm_memory_pool_codeheap_non_profiled_nmethods/1048576"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES"
+                  ]
+                },
+                {
+                  "x": 16,
                   "y": 13,
                   "w": 8,
                   "h": 13,
@@ -367,8 +448,8 @@
                   ]
                 },
                 {
-                  "x": 16,
-                  "y": 13,
+                  "x": 0,
+                  "y": 26,
                   "w": 8,
                   "h": 13,
                   "i": "13",
@@ -440,10 +521,10 @@
                   ]
                 },
                 {
-                  "x": 0,
+                  "x": 8,
                   "y": 26,
                   "w": 8,
-                  "h": 12,
+                  "h": 13,
                   "i": "15",
                   "type": "Widget",
                   "widget": {
@@ -479,8 +560,8 @@
                   ]
                 },
                 {
-                  "x": 16,
-                  "y": 0,
+                  "x": 0,
+                  "y": 13,
                   "w": 8,
                   "h": 13,
                   "i": "6",
@@ -520,7 +601,7 @@
                   ]
                 },
                 {
-                  "x": 0,
+                  "x": 8,
                   "y": 13,
                   "w": 8,
                   "h": 13,
diff --git a/skywalking-ui b/skywalking-ui
index e42734ba80e1..1be2792ff465 160000
--- a/skywalking-ui
+++ b/skywalking-ui
@@ -1,1 +1,1 @@
-Subproject commit e42734ba80e1ada3784880b8b70cafc69e234b79
+Subproject commit 1be2792ff46547fafe5b554b0cd4f086dd8d02b7


Test patch:
diff --git a/test/e2e-v2/java-test-service/e2e-protocol/src/main/proto b/test/e2e-v2/java-test-service/e2e-protocol/src/main/proto
index b8d5a5c27c27..d4da5699915e 160000
--- a/test/e2e-v2/java-test-service/e2e-protocol/src/main/proto
+++ b/test/e2e-v2/java-test-service/e2e-protocol/src/main/proto
@@ -1,1 +1,1 @@
-Subproject commit b8d5a5c27c271303ff1d3911fb85a554352f4f23
+Subproject commit d4da5699915ee52288f8ff1c954decf6363485bc