「java导出内存」java导入excel内存溢出
本篇文章给大家谈谈java导出内存,以及java导入excel内存溢出对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java代码怎么会导出内存溢出
1、内存中加载的数据量过于庞大;
2、集合类中有对对象的引用,使用完后没有清空,jvm不能回收;
3、代码中存在死循环或者循环产生过多重复的对象实体;
4、启动参数内存值过小;
5、第三方插件的bug。
如何导出Java应用程序的内存快照文件
问了一下我之前的在远标教育的大学同学,他说在windows下找到要导出的Java应用的进程号。比如我要导出本机的Eclipse的内存快照,因为Eclipse也是Java应用。首先要找到Eclispe的进程号。在命令行输入:tasklist | findstr eclipse。
可以看到,Eclispe的进程号是8052。然后在命令行输入:jmap -dump:format=b,file=elipse.hprof 8052。file=elipse.hprof意思是设置生成的文件名,8052就是Java程序的进程号。
如果是在Linux系统下面,在命令行输入:ps -ef | grep eclipse。
可以看到eclipse的进程号是2622。同样,在命令行输入:jmap -dump:format=b,file=elipse.hprof 2622。
把生成的elipse.hprof在SecureCRT命令行输入:sz elipse.hprof,把文件下载到本地,用MAT之类的工具进行分析就可以了。
java excel导出 内存溢出 怎么解决??
导出为excel,需要使用流的方式写入。
如果数据本身就很大,还要分批读入内存,分多次写入excel
最好是导出为csv格式,这样就不容易溢出。
java excel导出内存问题是怎么解决的
用这个方式占用内存比较小,不过不能控制excel格式
public class Excel {
public static void main(String[] args) {
try {
String url = "jdbc:oracle:thin:@10.20.1.23:1521:ilisdev";
String username = "uu";
String password = "pp";
Connection conn;
Statement stmt;
ResultSet rs;
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, username, password);
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String sql = "select a.appntname,c.riskname,b.name from lcpol a,ldcom b,lmrisk c "
+ "where a.managecom=b.comcode and a.riskcode = c.riskcode";
rs = stmt.executeQuery(sql);
String path = "c:/test.txt";// 数据存放的位置
Excel excel = new Excel(path, new String[] { "投保人名称", "保单号", "状态" });
excel.makeXLS(rs, 3);
} catch (Exception e) {
e.printStackTrace();
}
}
private BufferedWriter buff = null;
public Excel(String filePath, String[] titles) {
try {
if (filePath == null || filePath.equals("") || titles == null
|| titles.length == 0) {
System.out.println("路径或标题为空!");
} else {
buff = new BufferedWriter(new FileWriter(filePath));
for (int i = 0; i titles.length; i++) {
buff.write(titles[i] + "\t");
if (i == (titles.length - 1))
buff.write("\r\n");
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void makeXLS(ResultSet rs, int colNum) {
try {
while (rs.next()) {
for (int i = 1; i = colNum; i++) {
buff.write(rs.getString(i) + "\t");
if (i == colNum) {
buff.write("\r\n");
}
}
}
buff.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
关于java导出内存和java导入excel内存溢出的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-01,除非注明,否则均为
原创文章,转载请注明出处。