「java导出内存」java导入excel内存溢出

博主:adminadmin 2022-12-01 00:44:08 60

本篇文章给大家谈谈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内存溢出的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。