fixbug, the nonheap free dashboard is minus (#161)

* fixbug, the nonheap free dashboard is minus

* the jvm-maxHeap & jvm-maxNonHeap is -1, Free is no value

* the jvm-maxHeap & jvm-maxNonHeap is -1, Free is no value

* the jvm-maxHeap & jvm-maxNonHeap is -1, Free is no value

* the jvm-maxHeap & jvm-maxNonHeap is -1, Free is no value

* the jvm-maxHeap & jvm-maxNonHeap is -1, Free is no value
diff --git a/src/store/modules/dashboard/source/index.ts b/src/store/modules/dashboard/source/index.ts
index a8eb80f..d8405e9 100644
--- a/src/store/modules/dashboard/source/index.ts
+++ b/src/store/modules/dashboard/source/index.ts
@@ -71,8 +71,8 @@
   instanceCPU: { cpu: number[]; };
   instanceGC: { oldGC: number[], youngGC: number[] };
   instanceGCCount: { oldGC: number[], youngGC: number[] };
-  instanceHeap: { Value: number[], Free: number[] };
-  instanceNonheap: { Value: number[], Free: number[] };
+  instanceHeap: { Value: number[], Free: number[], Hint: string };
+  instanceNonheap: { Value: number[], Free: number[], Hint: string };
   instanceClrHeap: { Value: number[] };
   instanceClrCPU: { cpu: number[]; };
   instanceClrGC: { clrGCGen0: number[], clrGCGen1: number[], clrGCGen2: number[]};
diff --git a/src/store/modules/dashboard/source/instance.ts b/src/store/modules/dashboard/source/instance.ts
index c8a9bb8..609352d 100644
--- a/src/store/modules/dashboard/source/instance.ts
+++ b/src/store/modules/dashboard/source/instance.ts
@@ -24,8 +24,8 @@
   instanceCPU: { cpu: number[]; };
   instanceGC: { oldGC: number[], youngGC: number[] };
   instanceGCCount: { oldGC: number[], youngGC: number[] };
-  instanceHeap: { Value: number[], Free: number[] };
-  instanceNonheap: { Value: number[], Free: number[] };
+  instanceHeap: { Value: number[], Free: number[], Hint: string };
+  instanceNonheap: { Value: number[], Free: number[], Hint: string };
   instanceClrHeap: { Value: number[] };
   instanceClrCPU: { cpu: number[]; };
   instanceClrGC: { clrGCGen0: number[], clrGCGen1: number[], clrGCGen2: number[]};
@@ -38,8 +38,8 @@
   instanceCPU: { cpu: [] },
   instanceGC: { oldGC: [], youngGC: [] },
   instanceGCCount: { oldGC: [], youngGC: [] },
-  instanceHeap: { Value: [], Free: [] },
-  instanceNonheap: { Value: [], Free: [] },
+  instanceHeap: { Value: [], Free: [], Hint: '' },
+  instanceNonheap: { Value: [], Free: [], Hint: '' },
   instanceClrHeap: { Value: [] },
   instanceClrCPU: { cpu: [] },
   instanceClrGC: { clrGCGen0: [], clrGCGen1: [], clrGCGen2: [] },
@@ -68,12 +68,16 @@
   if (params && params.heap && params.maxHeap) {
     state.instanceHeap.Value = params.heap.values.map((i: Value) => (i.value / 1048576).toFixed(2));
     state.instanceHeap.Free = params.maxHeap.values
-    .map((i: Value, index: number) => ((i.value / 1048576 ) - state.instanceHeap.Value[index]).toFixed(2));
+      .map((i: Value, index: number) =>
+        i.value > -1 ? ((i.value / 1048576) - state.instanceHeap.Value[index]).toFixed(2) : 0);
+    state.instanceHeap.Hint = Math.max.apply(Math, params.maxHeap.values) === -1 ? 'Max Heap Unlimited' : '';
   }
   if (params && params.nonheap && params.maxNonHeap) {
     state.instanceNonheap.Value = params.nonheap.values.map((i: Value) => (i.value / 1048576).toFixed(2));
     state.instanceNonheap.Free = params.maxNonHeap.values
-    .map((i: Value, index: number) => ( state.instanceNonheap.Value[index] - (i.value / 1048576 )).toFixed(2));
+      .map((i: Value, index: number) =>
+        i.value > -1 ? ((i.value / 1048576) - state.instanceNonheap.Value[index]).toFixed(2) : 0);
+    state.instanceNonheap.Hint = Math.max.apply(Math, params.maxNonHeap.values) === -1 ? 'Max NonHeap Unlimited' : '';
   }
   if (params && params.clrHeap) {
     state.instanceClrHeap.Value = params.clrHeap.values.map((i: Value) => (i.value / 1048576 ).toFixed(2));
diff --git a/src/views/components/dashboard/charts/chart-line.vue b/src/views/components/dashboard/charts/chart-line.vue
index c9c85f0..75103f2 100644
--- a/src/views/components/dashboard/charts/chart-line.vue
+++ b/src/views/components/dashboard/charts/chart-line.vue
@@ -31,7 +31,7 @@
     }
   get option() {
     const temp: any = [];
-    const keys = Object.keys(this.data || {});
+    const keys = Object.keys(this.data || {}).filter((i: any) => Array.isArray(this.data[i]) && this.data[i].length);
     keys.forEach((i: any, index: number) => {
       const serie: any = {
           data: this.data[i].map((item: any, itemIndex: number) => [
diff --git a/src/views/components/dashboard/dashboard-item.vue b/src/views/components/dashboard/dashboard-item.vue
index adbd71e..8cf3c44 100644
--- a/src/views/components/dashboard/dashboard-item.vue
+++ b/src/views/components/dashboard/dashboard-item.vue
@@ -23,6 +23,7 @@
           <use xlink:href="#file-deletion"></use>
         </svg>
         <span>{{i.t}}</span>
+        <span class="hint" v-if="rocketDashboard[i.d].Hint" >({{rocketDashboard[i.d].Hint}})</span>
     </div>
     <div class="rk-dashboard-item-body">
       <div style="height:100%;">
@@ -78,6 +79,10 @@
   color: #9da5b2;
   padding: 6px 10px ;
 }
+.rk-dashboard-item-title .hint{
+  color: #FBB03B;
+  padding-left: 10px ;
+}
 .dashboard-item-title-input{
   border-style: unset;
   background-color: #ffffffcc;