读取txt文件 数据格式是json 然后进行添加或修改的操作 为什么老是内存溢出

读取txt文件 数据格式是json json数据有2.3w条 然后进行添加或修改的操作 为什么老是内存溢出,请问有没有好一点的解决方法

自己写的读写json类吗?我用cppjson,写操作几万条,没发现内存溢出

string wenbeng=File.ReadALLText(文件路径,Encoding.Default);
你试试这个可以让文本框里显示文字

改一下jdk的使用内存试试

string wenbeng=File.ReadALLText(文件路径,Encoding.Default);
你试试这个可以让文本框里显示文字

有代码没?把代码贴出来啊

JSONArray jsonArray=new JSONArray(userJson);
//同步用户信息
DtuserForm dtuserForm = null;
String login_name = "";
String realName = "";
String user_id = "";
String becomeDate = "";
String mobile = "";
String userType = "";
String orgId = "";
JSONObject jsonObject= null;
for (int i = 0; i < jsonArray.length(); i++) {
dtuserForm = new DtuserForm();
jsonObject= (JSONObject) jsonArray.get(i);
String validFlag = (String)jsonObject.get("validFlag");
if("0".equals(validFlag)){
validFlag = "2";
}
login_name = (String)jsonObject.get("login_name");
login_name = getPersonAndOrganData.desEncrypt(login_name);
realName = (String)jsonObject.get("realName");
System.out.println("realName-------------"+realName);
realName = getPersonAndOrganData.desEncrypt(realName);//解码
//realName = getEncoding(realName);
//realName = new String(realName.getBytes("UTF-8"),"UTF-8" );
//realName = filterEmoji(realName);
System.out.println("realName===="+realName+"====="+login_name);
user_id = (String)jsonObject.get("user_id");
System.out.println("userid--------------"+user_id);
becomeDate = (String)jsonObject.get("becomeDate");
mobile = (String)jsonObject.get("mobile");
if(!"".equals(becomeDate) && becomeDate != null){
if(becomeDate.length() >10){
becomeDate = becomeDate.substring(0, 10);
}
}
userType = (String)jsonObject.get("userType");//党员类型
orgId = (String)jsonObject.get("orgId");
dtuserForm.setDtuserid(user_id);
dtuserForm.setDtusername(login_name);
dtuserForm.setDtname(realName);
dtuserForm.setMobile(mobile);
dtuserForm.setRddate(becomeDate);
dtuserForm.setTheflag(validFlag);
dtuserForm.setDeptid(orgId);
if("5".equals(userType) || "4".equals(userType)){//只同步党员或者预备党员
addDtuser(db,dtuserForm,i);
}

                    dtuserForm = null;
                    jsonObject = null;
                    validFlag = null;
                    login_name = null;
                    realName = null;
                    user_id = null;
                    becomeDate = null;
                    mobile = null;
                    userType = null;
                    orgId = null;

                }

        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            db.dbclose();
        }
    }

}



 public boolean addDtuser(SqlData db,DtuserForm dtuserForm,int i) {
        boolean bIsSuccess = false;
        Collection c = new ArrayList();
        try {
            int countNum = new DtuserImpl().getUserCountByid(dtuserForm.getDtuserid());
            System.out.println("countNum--------------"+countNum);
            if(countNum <= 0){
            DateBean dt = new DateBean();
            String sql = "insert into dt_t_dtuser (dtuserid,dtusername,dtname,mobile,rddate,theflag,ifdjqx,theorder,thedate,dtflag) " +
                    "values ('"+dtuserForm.getDtuserid()+"','"+dtuserForm.getDtusername()+"','"+dtuserForm.getDtname()+"','"+dtuserForm.getMobile()+"','"+dtuserForm.getRddate()+"','"+dtuserForm.getTheflag()+"','0',"+(i+1)+",'"+dt.getalldate4()+"','1')";
            System.out.println(sql);
            String sql2 = "insert into dt_t_deptdtuser (deptdtuserid,deptid,dtusername) values ('"+UniqueIDGen.getUniqueID()+"','"+dtuserForm.getDeptid()+"','"+dtuserForm.getDtusername()+"')";
            System.out.println(sql2);

            String sql3 = "insert into dt_t_dueinit (dueinitid,dtusername,1due,2due,3due,4due,5due,6due,7due,8due,9due,10due,11due,12due,dtflag) " +
                    " values ('"+UniqueIDGen.getUniqueID()+"','"+dtuserForm.getDtusername()+"',0,0,0,0,0,0,0,0,0,0,0,0,'1')";
            System.out.println(sql3);
            c.add(sql);
            c.add(sql2);
            c.add(sql3);
            sql=null;
            sql2=null;
            sql3=null;
        }else{
            String sql4 = "";
            sql4 = "update dt_t_dtuser set dtname='"+dtuserForm.getDtname()+"',mobile='"+dtuserForm.getMobile()+"',rddate='"+dtuserForm.getRddate()+"',theflag = '"+dtuserForm.getTheflag()+"',theorder="+(i+1)+" ,dtflag='1' where dtusername = '"+dtuserForm.getDtusername()+"'";
            System.out.println("sql4------------------"+sql4);

            String sql5 = "update dt_t_deptdtuser set deptid = '"+dtuserForm.getDeptid()+"' where dtusername = '"+dtuserForm.getDtusername()+"'";
            System.out.println("sql5----------------"+sql5);
            c.add(sql4);
            c.add(sql5);
            sql4=null;
            sql5=null;
            //根据用户id获取数据库中的用户名,
            String dtusername = DtuserImpl.getDtusernameByid(db,dtuserForm.getDtuserid());
            String sql6 = "";
            String sql7 = "";
            String sql8 = "";
            //如果同步过来的用户名和数据库中的用户名不一样的话,修改数据库中所有的用户名
            if(!dtusername.equals(dtuserForm.getDtusername())){
                sql6 = "update dt_t_dtuserweixin set dtusername = '"+dtuserForm.getDtusername()+"' where dtusername = '"+dtusername+"' ";
                sql7 = "update dt_t_dueinit set dtusername = '"+dtuserForm.getDtusername()+"' where dtusername = '"+dtusername+"' ";
                sql8 = "update dt_t_duelog set dtusername = '"+dtuserForm.getDtusername()+"' where dtusername = '"+dtusername+"' ";
                c.add(sql6);
                c.add(sql7);
                c.add(sql8);
                sql6=null;
                sql7=null;
                sql8=null;
            }
            dtusername=null;
        }
            db.executebatchTask(c);
        }
        catch (Exception e) {
             e.printStackTrace();
        }
        finally {
            db.dbclose3();
        }

        return bIsSuccess;
    }

建议不要把json存到文件中,本身.net平台是有对象序列化的,你把对象直接序列化为本地的文本。

2.3w的数据多大要确定一下,如果文件很大,可以按照固定大小例如5M或者行数去切割,切割完毕再去处理,避免内存溢出;

string wenbeng=File.ReadALLText(文件路径,Encoding.Default);
你试试这个可以让文本框里显示文字
下面是代码:
JSONArray jsonArray=new JSONArray(userJson);
//同步用户信息
DtuserForm dtuserForm = null;
String login_name = "";
String realName = "";
String user_id = "";
String becomeDate = "";
String mobile = "";
String userType = "";
String orgId = "";
JSONObject jsonObject= null;
for (int i = 0; i < jsonArray.length(); i++) {
dtuserForm = new DtuserForm();
jsonObject= (JSONObject) jsonArray.get(i);
String validFlag = (String)jsonObject.get("validFlag");
if("0".equals(validFlag)){
validFlag = "2";
}
login_name = (String)jsonObject.get("login_name");
login_name = getPersonAndOrganData.desEncrypt(login_name);
realName = (String)jsonObject.get("realName");
System.out.println("realName-------------"+realName);
realName = getPersonAndOrganData.desEncrypt(realName);//解码
//realName = getEncoding(realName);
//realName = new String(realName.getBytes("UTF-8"),"UTF-8" );
//realName = filterEmoji(realName);
System.out.println("realName===="+realName+"====="+login_name);
user_id = (String)jsonObject.get("user_id");
System.out.println("userid--------------"+user_id);
becomeDate = (String)jsonObject.get("becomeDate");
mobile = (String)jsonObject.get("mobile");
if(!"".equals(becomeDate) && becomeDate != null){
if(becomeDate.length() >10){
becomeDate = becomeDate.substring(0, 10);
}
}
userType = (String)jsonObject.get("userType");//党员类型
orgId = (String)jsonObject.get("orgId");
dtuserForm.setDtuserid(user_id);
dtuserForm.setDtusername(login_name);
dtuserForm.setDtname(realName);
dtuserForm.setMobile(mobile);
dtuserForm.setRddate(becomeDate);
dtuserForm.setTheflag(validFlag);
dtuserForm.setDeptid(orgId);
if("5".equals(userType) || "4".equals(userType)){//只同步党员或者预备党员
addDtuser(db,dtuserForm,i);
}

                dtuserForm = null;
                jsonObject = null;
                validFlag = null;
                login_name = null;
                realName = null;
                user_id = null;
                becomeDate = null;
                mobile = null;
                userType = null;
                orgId = null;

            }

    }catch (Exception e) {
        e.printStackTrace();
    }finally{
        db.dbclose();
    }
}

}

可以根据json格式截取去不同的json串