Răsfoiți Sursa

spring boot 开发过程中代码热部署

wenwan 7 ani în urmă
părinte
comite
7215134c95

BIN
basic-knowledge/img/.DS_Store


BIN
basic-knowledge/img/18.png


BIN
basic-knowledge/img/19.png


+ 2 - 1
basic-knowledge/jvm内存结构.md

@@ -4,7 +4,8 @@
 
 [https://mp.weixin.qq.com/s/li3ISdodGu2EK_Fo_4NJPA](https://mp.weixin.qq.com/s/li3ISdodGu2EK_Fo_4NJPA)
 
-####虚拟机运行时的数据区
+#### 虚拟机运行时的数据区
+
 ![image](img/1.jpg)
 
 a)程序计数器(program counter register),一块较小的内存空间,可以看作当前线程所执行的字节码的行号指示器。由于java虚拟机是采用多线程,通过线程切换获得时间片得到cpu的控制权。为了线程切换后能恢复到正确的执行位置。

+ 2 - 2
basic-knowledge/jvm性能调优.md

@@ -2,7 +2,7 @@
 
 ---
 
-####一、jvm参数
+#### 一、jvm参数
 
 *	-Xms 
 
@@ -21,7 +21,7 @@
 
1. Xmn用于设置新生代的大小。过小会增加Minor GC频率,过大会减小老年代的大小。一般设为整个堆空间的1/4或1/3.
 
2. XX:SurvivorRatio用于设置新生代中survivor空间(from/to)和eden空间的大小比例;
XX:TargetSurvivorRatio表示,当经历Minor GC后,survivor空间占有量(百分比)超过它的时候,就会压缩进入老年代(当然,如果survivor空间不够,则直接进入老年代)。默认值为50%。

3. 为了性能考虑,一开始尽量将新生代对象留在新生代,避免新生的大对象直接进入老年代。因为新生对象大部分都是短期的,这就造成了老年代的内存浪费,并且回收代价也高(Full GC发生在老年代和方法区Perm).
 
4. 当Xms=Xmx,可以使得堆相对稳定,避免不停震荡
-
5. 一般来说,MaxPermSize设为64MB可以满足绝大多数的应用了。若依然出现方法区溢出,则可以设为128MB。若128MB还不能满足需求,那么就应该考虑程序优化了,减少**动态类**的产生。


####二、垃圾回收
+
5. 一般来说,MaxPermSize设为64MB可以满足绝大多数的应用了。若依然出现方法区溢出,则可以设为128MB。若128MB还不能满足需求,那么就应该考虑程序优化了,减少**动态类**的产生。


#### 二、垃圾回收
 

**垃圾回收算法:**
 
*	引用计数法:会有循环引用的问题,古老的方法;
*	Mark-Sweep:根可达判断,最大的问题是空间碎片(清除垃圾之后剩下不连续的内存空间);
 *	Copying:对于短命对象来说有用,否则需要复制大量的对象,效率低。**如Java的新生代堆空间中就是使用了它(survivor空间的from和to区);**
*	Mark-Compact:对于老年对象来说有用,无需复制,不会产生内存碎片

**GC考虑的指标**

+ 22 - 0
basic-knowledge/springboot-hot-reload.md

@@ -0,0 +1,22 @@
+## spring boot 热部署
+---
+
+
+![image](img/18.png)
+
+
+右键---》Run As---》Run Configurations---》在Arguments的tab里面设置VM参数如下
+
+```
+-javaagent:/Users/onlyone/M2/org/springframework/springloaded/1.2.6.RELEASE/springloaded-1.2.6.RELEASE.jar  -noverify
+```
+
+![image](img/19.png)
+
+
+即可实现开发过程中代码热部署!!!
+
+
+其它方式可参考:
+
+http://blog.csdn.net/l1028386804/article/details/69940574

+ 1 - 1
basic-knowledge/springboot.md

@@ -7,7 +7,7 @@
 * [源码](https://github.com/spring-projects/spring-boot)
 * [SpringBoot 组件接入示例](https://github.com/aalansehaiyang/SpringBoot-Learning)
 * [java autoConfig配置](springboot-javaConfig.md)
-* [热部署](http://blog.csdn.net/l1028386804/article/details/69940574)
+* [开发过程中代码热部署](springboot-hot-reload.md)
 * [eclipse中如何跑spring boot的单元测试](springboot-unit.md)
 
 #### 学习资料