JVM运行参数
三种参数类型
标准参数
- -help
- -version
- -D 设置程序运行的参数
- -server 使用并行的垃圾收集器,启动慢,运行快
- -client 使用串行的垃圾收集器,启动快,运行慢
-X参数(非标准参数)
- -Xint
- -Xcomp
- -Xmixed
- -Xms 堆的初始大小
- -Xmx 堆的最大大小
-XX 参数(使用率较高)
- -XX: newSize
- -XX:+UseSerialGC
- -XX:newRadio
- -XX:+PrintFlagsFinal 输出JVM运行时的参数

jps
jinfo -flags 进程id





![digraph { rankdir = TB; node [shape = record]; str [label = " <1> 'R' | <2> 'e' | <3> 'd' | <4> 'i' | <5> 's' | <6> '\\0' "]; node [shape = plaintext]; p1 [label = "len = 1"]; p1 -> str:1; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-15702f3018be5f9c38705fe1a3c3179cfc7ce208.png)
![digraph { rankdir = TB; node [shape = record]; str [label = " <1> 'R' | <2> 'e' | <3> 'd' | <4> 'i' | <5> 's' | <6> '\\0' "]; node [shape = plaintext]; p2 [label = "len = 2"]; p2 -> str:2; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-11db45788777fdf62308ab859e5e4418276616b1.png)
![digraph { rankdir = TB; node [shape = record]; str [label = " <1> 'R' | <2> 'e' | <3> 'd' | <4> 'i' | <5> 's' | <6> '\\0' "]; node [shape = plaintext]; p3 [label = "len = 3"]; p3 -> str:3; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-22f91c392200e20da51ad61306765bee1d874a13.png)
![digraph { rankdir = TB; node [shape = record]; str [label = " <1> 'R' | <2> 'e' | <3> 'd' | <4> 'i' | <5> 's' | <6> '\\0' "]; node [shape = plaintext]; p4 [label = "len = 4"]; p4 -> str:4; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-ff4aa6ea06fabe2bdf8f26325bca6a02fa480da8.png)
![digraph { rankdir = TB; node [shape = record]; str [label = " <1> 'R' | <2> 'e' | <3> 'd' | <4> 'i' | <5> 's' | <6> '\\0' "]; node [shape = plaintext]; p5 [label = "len = 5"]; p5 -> str:5; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-59da530d8d0f16ce3eff95e285460b9ea5a0f389.png)
![digraph { label = "\n 图 2-4 计算 C 字符串长度的过程"; rankdir = TB; node [shape = record]; str [label = " <1> 'R' | <2> 'e' | <3> 'd' | <4> 'i' | <5> 's' | <6> '\\0' "]; node [shape = plaintext]; p6 [label = "发现空字符 \n 停止计数 \n 字符串的长度为 5 字节"]; p6 -> str:6; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-e505478b940695671030146e66d6b3b292e7ae8c.png)
![digraph { label = "\n 图 2-5 五字节长的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 5 | <buf> buf"]; buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | '\\0' }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-dbd2f4d49a9f495f18093129393569f93e645529.png)
![digraph { label = "\n 图 2-6 十一字节长的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 11 | <buf> buf"]; buf [label = "{ 'h' | 'e' | 'l' | 'l' | 'o' | ' ' | 'w' | 'o' | 'r' | 'l' | 'd' | '\\0' }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-33b39668e26fa63350b177c13b38f201fcebb6c4.png)
![digraph { label = "\n 图 2-7 在内存中紧邻的两个 C 字符串"; rankdir = TB; // node [shape = record]; memory [label = " ... | <s1> 'R' | 'e' | 'd' | 'i' | 's' | '\\0' | <s2> 'M' | 'o' | 'n' | 'g' | 'o' | 'D' | 'B' | '\\0' | ... "]; // node [shape = plaintext]; s1 -> memory:s1; s2 -> memory:s2; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-7daf86931b270e1f4bacf20e3f56ebcb2fc7e08e.png)
![digraph { label = "\n 图 2-8 s1 的内容溢出到了 s2 所在的位置上"; rankdir = TB; // node [shape = record]; memory [label = " ... | <s1> 'R' | 'e' | 'd' | 'i' | 's' | ' ' | <s2> 'C' | 'l' | 'u' | 's' | 't' | 'e' | 'r' | '\\0' | ... "]; // node [shape = plaintext]; s1 -> memory:s1; s2 -> memory:s2; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-2ff855d462d63f935deedb05c0d6447ed4b44bb3.png)
![digraph { label = "\n 图 2-9 sdscat 执行之前的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 5 | <buf> buf"]; buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | '\\0' }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-87e1f7dda1bde2b3dd53c143a12a3a12ec1949b7.png)
![digraph { label = "\n 图 2-10 sdscat 执行之后的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 13 | len \n 13 | <buf> buf"]; buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | ' ' | 'C' | 'l' | 'u' | 's' | 't' | 'e' | 'r'| '\\0' | ... }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-a52da469a2a921623086793193a2d35eb1fed716.png)
![digraph { label = "\n 图 2-11 执行 sdscat 之前的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 5 | <buf> buf"]; buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | '\\0' }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-75c915b3f40fc1586e518b42830a3d8ba4119cf7.png)
![digraph { label = "\n 图 2-12 执行 sdscat 之后的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 13 | len \n 13 | <buf> buf"]; buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | ' ' | 'C' | 'l' | 'u' | 's' | 't' | 'e' | 'r'| '\\0' | ... }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-42ee54f9997d36b2b8ffb0ab75dce2fd509882db.png)
![digraph { label = "\n 图 2-13 再次执行 sdscat 之后的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 4 | len \n 22 | <buf> buf"]; //buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | ' ' | 'C' | 'l' | 'u' | 's' | 't' | 'e' | 'r'| ' ' | 'T' | 'u' | 't' | 'o' | 'r' | 'i' | 'a' | 'l' | '\\0' | ... }"]; buf [label = "{ 'R' | 'e' | 'd' | 'i' | 's' | ... | ' ' | 'T' | 'u' | 't' | 'o' | 'r' | 'i' | 'a' | 'l' | '\\0' | ... }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-3398fdf9cc2ab046814e2721f69cc4ed97f043ab.png)
![digraph { label = "\n 图 2-14 执行 sdstrim 之前的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 11 | <buf> buf"]; buf [label = " { 'X' | 'Y' | 'X' | 'X' | 'Y' | 'a' | 'b' | 'c' | 'X' | 'Y' | 'Y' | '\\0' } "]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-e0b39c48a2c522f5f7802f1e325b5cb25ac92579.png)
![digraph { label = "\n 图 2-15 执行 sdstrim 之后的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 8 | len \n 3 | <buf> buf"]; buf [label = " { 'a' | 'b' | 'c' | '\\0' | <1> | <2> | <3> | <4> | <5> | <6> | <7> | <8> } "]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-c58adbc4441b5622084daeee71c0cb306db28741.png)
![digraph { label = "\n 图 2-16 执行 sdscat 之后的的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 2 | len \n 9 | <buf> buf"]; buf [label = " { 'a' | 'b' | 'c' | ' ' | 'R' | 'e' | 'd' | 'i' | 's' | '\\0' | <1> | <2> } "]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-d518d01875adb59245dce35983eab3528f2e59ea.png)
![digraph { label = "\n 图 2-17 使用空字符来分割单词的特殊数据格式"; node [shape = record]; content [label = " 'R' | 'e' | 'd' | 'i' | 's' | '\\0' | 'C' | 'l' | 'u' | 's' | 't' | 'e' | 'r' | '\\0' "]; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-0fcb9185ccc066e9f298c00d8fd272f52cd1e43d.png)
![digraph { label = "\n 图 2-18 保存了特殊数据格式的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 14 | <buf> buf"]; buf [label = " { 'R' | 'e' | 'd' | 'i' | 's' | '\\0' | 'C' | 'l' | 'u' | 's' | 't' | 'e' | 'r' | '\\0' | '\\0' } "]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-a34fffb686d81038f6bafbca7be99831df8b3e6b.png)
![digraph { label = "\n 图 2-19 一个保存着文本数据的 SDS"; rankdir = LR; node [shape = record]; // sdshdr [label = "sdshdr | free \n 0 | len \n 11 | <buf> buf"]; buf [label = "{ 'h' | 'e' | 'l' | 'l' | 'o' | ' ' | 'R' | 'e' | 'd' | 'i' | 's' | '\\0' }"]; // sdshdr:buf -> buf; }](/blog/2019/05/10/redis/E:/Git\TTMS\MX-Notes\image\graphviz-82a01911a9b47725ee97416aac875752fa3bdd2b.png)


