فهرست منبع

update 清理大对象内存

deason 10 ماه پیش
والد
کامیت
5363dc0c21

+ 6 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/model/baidu/BaiduApiHelper.java

@@ -62,6 +62,7 @@ public class BaiduApiHelper {
 
         String requestUrl = String.format("%s?access_token=%s", Constants.BAIDU_FACE_VERIFY_URL, accessToken);
         RequestBody formBody = FormBody.create(MediaType.parse(Constants.JSON_CONTENT_TYPE), jsonParams);
+        jsonParams = null;// 清理大对象内存
 
         BaiduResponse response = callApi(requestUrl, formBody);
         return parseFaceVerifyResult(response);
@@ -74,6 +75,7 @@ public class BaiduApiHelper {
 
         String requestUrl = String.format("%s?appid=%s", properties.getPrivateBaiduUrlPrefix() + Constants.PRIVATE_BAIDU_FACE_VERIFY_URL, properties.getPrivateBaiduAppId());
         RequestBody formBody = FormBody.create(MediaType.parse(Constants.JSON_CONTENT_TYPE), jsonParams);
+        jsonParams = null;// 清理大对象内存
 
         BaiduResponse response = callApi(requestUrl, formBody);
         return parseFaceVerifyResult(response);
@@ -89,6 +91,7 @@ public class BaiduApiHelper {
 
         String requestUrl = String.format("%s?access_token=%s", Constants.BAIDU_FACE_DETECT_URL, accessToken);
         RequestBody formBody = FormBody.create(MediaType.parse(Constants.JSON_CONTENT_TYPE), jsonParams);
+        jsonParams = null;// 清理大对象内存
 
         BaiduResponse response = callApi(requestUrl, formBody);
         return parseFaceDetectResult(response);
@@ -101,6 +104,7 @@ public class BaiduApiHelper {
 
         String requestUrl = String.format("%s?appid=%s", properties.getPrivateBaiduUrlPrefix() + Constants.PRIVATE_BAIDU_FACE_DETECT_URL, properties.getPrivateBaiduAppId());
         RequestBody formBody = FormBody.create(MediaType.parse(Constants.JSON_CONTENT_TYPE), jsonParams);
+        jsonParams = null;// 清理大对象内存
 
         BaiduResponse response = callApi(requestUrl, formBody);
         return parseFaceDetectResult(response);
@@ -116,6 +120,7 @@ public class BaiduApiHelper {
 
         String requestUrl = String.format("%s?access_token=%s", Constants.BAIDU_FACE_COMPARE_URL, accessToken);
         RequestBody formBody = FormBody.create(MediaType.parse(Constants.JSON_CONTENT_TYPE), jsonParams);
+        jsonParams = null;// 清理大对象内存
 
         BaiduResponse response = callApi(requestUrl, formBody);
         return parseFaceCompareResult(response, expectFaceCompareScore);
@@ -128,6 +133,7 @@ public class BaiduApiHelper {
 
         String requestUrl = String.format("%s?appid=%s", properties.getPrivateBaiduUrlPrefix() + Constants.PRIVATE_BAIDU_FACE_COMPARE_URL, properties.getPrivateBaiduAppId());
         RequestBody formBody = FormBody.create(MediaType.parse(Constants.JSON_CONTENT_TYPE), jsonParams);
+        jsonParams = null;// 清理大对象内存
 
         BaiduResponse response = callApi(requestUrl, formBody);
         return parseFaceCompareResult(response, expectFaceCompareScore);

+ 13 - 0
examcloud-starters/examcloud-face-verify-starter/src/main/java/cn/com/qmth/examcloud/starters/face/verify/service/impl/FaceVerifyServiceImpl.java

@@ -51,6 +51,11 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         images.add(imageData);
         String params = new JsonHelper().toJson(images);
 
+        // 清理大对象内存
+        images.clear();
+        imageData.clear();
+        faceParam = null;
+
         if (usePrivateBaiduApi) {
             return BaiduApiHelper.faceVerifyUsePrivateApi(properties, params);
         }
@@ -83,6 +88,10 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         imageData.put("max_face_num", "2");
         String params = new JsonHelper().toJson(imageData);
 
+        // 清理大对象内存
+        imageData.clear();
+        faceParam = null;
+
         if (usePrivateBaiduApi) {
             return BaiduApiHelper.faceDetectUsePrivateApi(properties, params);
         }
@@ -119,6 +128,10 @@ public class FaceVerifyServiceImpl implements FaceVerifyService {
         Double expectFaceCompareScore = faceParam.getExpectFaceCompareScore() != null ?
                 faceParam.getExpectFaceCompareScore() : properties.getBaiduExpectFaceCompareScore();
 
+        // 清理大对象内存
+        images.clear();
+        faceParam = null;
+
         if (usePrivateBaiduApi) {
             return BaiduApiHelper.faceCompareUsePrivateApi(properties, params, expectFaceCompareScore);
         }