- 浏览: 732018 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (663)
- Eclipse&MyEclipse (40)
- PHP (3)
- Java (72)
- CSS (3)
- MySQL (35)
- Oracle (68)
- Red Hat Linux (23)
- Tomcat (26)
- Oracle10gAS (1)
- Spring (28)
- MyBatis&iBatis (13)
- JS (47)
- JQuery (23)
- Editplus (2)
- 其他 (4)
- Html (15)
- SQL (5)
- Ant (2)
- Hadoop (2)
- Servlet (9)
- Windows (11)
- Flex (1)
- CentOS Linux (7)
- Microsoft SQL Server (2)
- DB2 (3)
- Mysql char 与 varchar 区别 (0)
- excel (5)
- jsp (8)
- FreeMarker (1)
- EasyUI (5)
- WebShpere MQ (1)
- Maven2 (6)
- 浏览器缓存 (2)
- visio (1)
- XML (2)
- 物联网 (1)
- Maven (3)
- JSTL (2)
- HTTP (1)
- Fourinone (1)
- IP知识 (1)
- MyBatis (1)
- 项目管理 (2)
- office2003+2007 (1)
- DOS (1)
- JProfiler (1)
- Thinpad T440p (1)
- ActiveMQ (10)
- MongoDB (5)
- Vert.x3 (1)
- Ngnix (3)
- Spark (2)
- BigData (1)
- 性能概念公式 (1)
- RocketMQ (3)
- IT名词术语 (1)
- Java编程工具 (1)
- RabbitMQ (2)
- MetaMQ (1)
- 架构 (6)
- KafkaMQ (7)
- Redis (4)
- OAuth (1)
- Gradle (1)
- CentOS (5)
- Microsoft_Toolkit (1)
- git (5)
- IntelliJ Idea (4)
- Nginx (3)
- docker (12)
- VMware (2)
- 算法 (1)
- JDBCPool (1)
- spring-cloud (7)
- netbean (1)
- 微信小程序 (2)
- CURL (2)
- Java生成二维码 (1)
- 区块链 (2)
- 机器学习 (1)
- SpringBoot (3)
- Android (9)
- 微服务架构 (1)
- Kubernetes (2)
- OpenProject (0)
- 测试 (1)
- https (1)
- 开源许可证 (1)
- ServiceMesh (2)
- NET (0)
- .NET (1)
- TEST (1)
- iOS (2)
- thymeleaf (4)
- lombok (1)
- 浏览器设置 (1)
- 富文本编辑器 (1)
- 搜索引擎 (1)
- IT常识 (1)
- UML (0)
- Axure (1)
- appstore无法联网 (0)
- apk无法安装 (1)
- SQLServer (2)
- 卸载弹窗软件 (1)
- jenkins (1)
- TortoiseGit (1)
- eureka (1)
- ajax (1)
- spyder (0)
最新评论
一、从数据库中取大量数据(10万行左右)的时候,用jxl工具写excel,由于jxl是将每一个单元格生都成一个Cell对象,每一个对象都要消耗一定的内存空间,所以很容易导致内存溢出:
sheet0.addCell(new Label(colnum++,rownum,rs.getString("aname"),stuformat))//
tomcat报异常为:
java.lang.OutOfMemoryError: Java heap space
虽然在数据量在1—2万行左右的情况下,不会报异常,但是对服务器的资源消耗也是比较大的。
二、解决方法
要从消耗内存的原因出发解决,既然是由于生成大量的对象导致,就避免java创建太多的对象,就不能用jxl了。
另外可以对提前的数据进行情况来提取,对于不需要的数据可以不提取,节省时间和资源消耗。
用数据流的方法解决:
(1)直接写.txt文本文件,用”/t”来分割内容,可以从txt中直接复制到excel文件中。
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("hellotxt.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
osw.write("aaa,bbb,ccc,ddd,eee,fff/r/n");
osw.write("aaa/tbbb/tccc/tddd/teee/tfff/r/n");
osw.flush();
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
记事本打开效果如下:
aaa,bbb,ccc,ddd,eee,fff
aaa bbb ccc ddd eee fff
直接从记事本负责粘贴到excel中,效果如下:
aaa,bbb,ccc,ddd,eee,fff
aaa
bbb
ccc
ddd
eee
fff
(2)也可以写成.csv
.csv文件打开格式跟excel基本一样,但是写入方式和写文本方式类似,可以以流的形式追加,只要在每列之间以固定标识符进行间隔,不存在内存和格式问题.
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("helloCsv.csv");
fw.write("aaa,bbb,ccc,ddd,eee,fff,ggg,hhh/r/n");
fw.write("aa1,bb1,cc1,dd1,ee1,ff1,gg1,hh1/r/n");
fw.write("aaa/r/n");
fw.write("aa2,bb2,cc2,dd2,ee2,ff2,gg2,hh2/r/n");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
用excel打开文件显示如下,可以看到英文的逗号被作为了分割符而不显示出来。
aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
aa1
bb1
cc1
dd1
ee1
ff1
gg1
hh1
aaa
aa2
bb2
cc2
dd2
ee2
ff2
gg2
hh2
用记事本打开显示如下,逗号被作为内容的一部分显示出来:
aaa,bbb,ccc,ddd,eee,fff,ggg,hhh
aa1,bb1,cc1,dd1,ee1,ff1,gg1,hh1
aaa
aa2,bb2,cc2,dd2,ee2,ff2,gg2,hh2
注:写.csv文件的时候要注意里面的英文逗号,在用excel打开.csv文件的时候,英文逗号作为单元格之间的分隔符不显示出来。所以写的内容中的英文逗号要替换掉。
(3)写html
HTML 和 Excel之间通过改后缀名是可以相互转换的, 所以,可以先写HTML,这样内存不会溢出,写好后再改成xls后缀名。
打开一个EXCEL,然后,选择另存为网页,可以看一下这个HTML的源码,直接把这个HTML文件后缀名改为xls,打开后效果和刚才那个EXCEL一样,但是会文件会变大。但是,压缩后比EXCEL还小。
以上几种方法以写.txt文件操作简单,效率比较高,写.csv文件效率跟写txt文件查不多,而且在小于65535行的情况下可以直接用excel打开,如果采用这个方法并且想用excel直接打开,行数如果多于65535行需要写多个.csv文件,并且要注意替换掉内容中的英文逗号,写html文件要写大量的标签,相对txt和csv文件内容会增加很多,具体写法可以上网查。比较优劣效率易编写情况,综合得出可以采用写txt和csv方法。
在网上查询相关资料,结合本案例,做的一个测试:
在java写文件中,通常会使用FileOutputStream和FileWriter,FileWriter只能写文本文件。 FileOutputStream也经常结合BufferedOutputStream。因为实际应用中写文本文件的情况占了大多数,对于java些excel的时候有jxl包,所以下面测试用不同的方式生成一个相同行数、大小相同的文件的四种不同方式。测试一下生成数据的时间,文件的大小,已经可以间接的看出消耗内存的情况。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流。
要写入字符流,请考虑使用 FileWriter。
BufferedOutputStream该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统。
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class createDataFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileOutputStream out = null;
FileOutputStream outSTr = null;
BufferedOutputStream Buff=null;
FileWriter fw = null;
WritableWorkbook wb=null;
int count=100000;//写文件行数
try {
long begin = System.currentTimeMillis();
out = new FileOutputStream(new File("C:/add1.txt"));
for (int i = 0; i < count; i++) {
out.write("测试java 文件操作/r/n".getBytes());
}
out.close();
long end = System.currentTimeMillis();
// System.out.println((float)(new File("C:/add1.txt").length())/1024/1024);
System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒");
long begin0 = System.currentTimeMillis();
outSTr = new FileOutputStream(new File("C:/add2.txt"));
Buff=new BufferedOutputStream(outSTr);
for (int i = 0; i < count; i++) {
Buff.write("测试java 文件操作/r/n".getBytes());
}
Buff.flush();
Buff.close();
long end0 = System.currentTimeMillis();
System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0) + " 豪秒");
long begin3 = System.currentTimeMillis();
fw = new FileWriter("C:/add3.txt");
for (int i = 0; i < count; i++) {
fw.write("测试java 文件操作/r/n");
}
fw.close();
long end3 = System.currentTimeMillis();
System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");
//生成excel
long begin4=System.currentTimeMillis();
wb=Workbook.createWorkbook( new File( "c:/test.xls" ));
WritableSheet sheet0= wb.createSheet( "sheet1",0);
//System.out.print(wb.getNumberOfSheets());
int rownum=0;
int limint=1;
int snum=0;
for(int i=0;i<count;i++){
sheet0.addCell(new Label(0,rownum++,"测试java 文件操作"));
limint++;
if(limint>65530){
snum++;
wb.createSheet("sheet"+(wb.getNumberOfSheets()+1),wb.getNumberOfSheets()+1);//增加一个sheet
sheet0 = wb.getSheet(snum);
rownum = sheet0.getRows();
limint=0;
}
}
wb.write();
wb.close();
long end4=System.currentTimeMillis();
System.out.println("jxl生成excel执行耗时:" + (end4 - begin4) + " 豪秒");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
以下结果经过多次执行,取常出现的数据,由于只是简单比较,不做详细统计。
1. 当count=1000的,即写文件1000行的时候,写出的文件大小为18.5KB:
FileOutputStream执行耗时:16 豪秒
BufferedOutputStream执行耗时:16 豪秒
FileWriter执行耗时:15 豪秒
jxl生成excel执行耗时:296 豪秒 文件大小为47KB
2.当count=10000的,即写文件10000行的时候,写出的文件大小为185KB:
FileOutputStream执行耗时:94 豪秒
BufferedOutputStream执行耗时:15 豪秒
FileWriter执行耗时:16 豪秒
jxl生成excel执行耗时:391 豪秒 文件大小为369KB
3.当count=100000的,即写文件100000行的时候,写出的文件大小为1856KB:
FileOutputStream执行耗时:594 豪秒
BufferedOutputStream执行耗时:94 豪秒
FileWriter执行耗时:78 豪秒
jxl生成excel执行耗时:2625 豪秒 文件大小为3592KB
4.当count=1000000的,即写文件1000000行的时候,写出的文件大小为18555KB:
FileOutputStream执行耗时:5625 豪秒
BufferedOutputStream执行耗时:1328 豪秒
FileWriter执行耗时:875 豪秒
执行生成excel的时候出现了异常:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
由以上数据可以看到,用文件流来写的速度比写excel的速度要快很多,生成的文件大小也比较小大小相差一半左右,而且从最后一项来看,写excel的时候对java虚拟机内存消耗也比较大,会报异常。
用流来写的三种方法中比较得出:如果不用缓冲流BufferedOutputStream,FileOutputStream写文件的是很不好的。当写 1000000行的文件的时候,FileOutputStream比FileWriter要慢4750毫秒, BufferedOutputStream比FileWriter慢553毫秒。
不要小看这几秒的时间。当操作的数据量很大的时候,这点性能的差距就会很大了。在通用数据迁移工具导出数据库2千万条记录生成sql脚本文件的时候,性能性能相差2分钟以上。
sheet0.addCell(new Label(colnum++,rownum,rs.getString("aname"),stuformat))//
tomcat报异常为:
java.lang.OutOfMemoryError: Java heap space
虽然在数据量在1—2万行左右的情况下,不会报异常,但是对服务器的资源消耗也是比较大的。
二、解决方法
要从消耗内存的原因出发解决,既然是由于生成大量的对象导致,就避免java创建太多的对象,就不能用jxl了。
另外可以对提前的数据进行情况来提取,对于不需要的数据可以不提取,节省时间和资源消耗。
用数据流的方法解决:
(1)直接写.txt文本文件,用”/t”来分割内容,可以从txt中直接复制到excel文件中。
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("hellotxt.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
osw.write("aaa,bbb,ccc,ddd,eee,fff/r/n");
osw.write("aaa/tbbb/tccc/tddd/teee/tfff/r/n");
osw.flush();
osw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
记事本打开效果如下:
aaa,bbb,ccc,ddd,eee,fff
aaa bbb ccc ddd eee fff
直接从记事本负责粘贴到excel中,效果如下:
aaa,bbb,ccc,ddd,eee,fff
aaa
bbb
ccc
ddd
eee
fff
(2)也可以写成.csv
.csv文件打开格式跟excel基本一样,但是写入方式和写文本方式类似,可以以流的形式追加,只要在每列之间以固定标识符进行间隔,不存在内存和格式问题.
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("helloCsv.csv");
fw.write("aaa,bbb,ccc,ddd,eee,fff,ggg,hhh/r/n");
fw.write("aa1,bb1,cc1,dd1,ee1,ff1,gg1,hh1/r/n");
fw.write("aaa/r/n");
fw.write("aa2,bb2,cc2,dd2,ee2,ff2,gg2,hh2/r/n");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
用excel打开文件显示如下,可以看到英文的逗号被作为了分割符而不显示出来。
aaa
bbb
ccc
ddd
eee
fff
ggg
hhh
aa1
bb1
cc1
dd1
ee1
ff1
gg1
hh1
aaa
aa2
bb2
cc2
dd2
ee2
ff2
gg2
hh2
用记事本打开显示如下,逗号被作为内容的一部分显示出来:
aaa,bbb,ccc,ddd,eee,fff,ggg,hhh
aa1,bb1,cc1,dd1,ee1,ff1,gg1,hh1
aaa
aa2,bb2,cc2,dd2,ee2,ff2,gg2,hh2
注:写.csv文件的时候要注意里面的英文逗号,在用excel打开.csv文件的时候,英文逗号作为单元格之间的分隔符不显示出来。所以写的内容中的英文逗号要替换掉。
(3)写html
HTML 和 Excel之间通过改后缀名是可以相互转换的, 所以,可以先写HTML,这样内存不会溢出,写好后再改成xls后缀名。
打开一个EXCEL,然后,选择另存为网页,可以看一下这个HTML的源码,直接把这个HTML文件后缀名改为xls,打开后效果和刚才那个EXCEL一样,但是会文件会变大。但是,压缩后比EXCEL还小。
以上几种方法以写.txt文件操作简单,效率比较高,写.csv文件效率跟写txt文件查不多,而且在小于65535行的情况下可以直接用excel打开,如果采用这个方法并且想用excel直接打开,行数如果多于65535行需要写多个.csv文件,并且要注意替换掉内容中的英文逗号,写html文件要写大量的标签,相对txt和csv文件内容会增加很多,具体写法可以上网查。比较优劣效率易编写情况,综合得出可以采用写txt和csv方法。
在网上查询相关资料,结合本案例,做的一个测试:
在java写文件中,通常会使用FileOutputStream和FileWriter,FileWriter只能写文本文件。 FileOutputStream也经常结合BufferedOutputStream。因为实际应用中写文本文件的情况占了大多数,对于java些excel的时候有jxl包,所以下面测试用不同的方式生成一个相同行数、大小相同的文件的四种不同方式。测试一下生成数据的时间,文件的大小,已经可以间接的看出消耗内存的情况。
FileOutputStream 用于写入诸如图像数据之类的原始字节的流。
要写入字符流,请考虑使用 FileWriter。
BufferedOutputStream该类实现缓冲的输出流。通过设置这种输出流,应用程序就可以将各个字节写入基础输出流中,而不必为每次字节写入调用基础系统。
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
public class createDataFile {
public static void main(String[] args) {
// TODO Auto-generated method stub
FileOutputStream out = null;
FileOutputStream outSTr = null;
BufferedOutputStream Buff=null;
FileWriter fw = null;
WritableWorkbook wb=null;
int count=100000;//写文件行数
try {
long begin = System.currentTimeMillis();
out = new FileOutputStream(new File("C:/add1.txt"));
for (int i = 0; i < count; i++) {
out.write("测试java 文件操作/r/n".getBytes());
}
out.close();
long end = System.currentTimeMillis();
// System.out.println((float)(new File("C:/add1.txt").length())/1024/1024);
System.out.println("FileOutputStream执行耗时:" + (end - begin) + " 豪秒");
long begin0 = System.currentTimeMillis();
outSTr = new FileOutputStream(new File("C:/add2.txt"));
Buff=new BufferedOutputStream(outSTr);
for (int i = 0; i < count; i++) {
Buff.write("测试java 文件操作/r/n".getBytes());
}
Buff.flush();
Buff.close();
long end0 = System.currentTimeMillis();
System.out.println("BufferedOutputStream执行耗时:" + (end0 - begin0) + " 豪秒");
long begin3 = System.currentTimeMillis();
fw = new FileWriter("C:/add3.txt");
for (int i = 0; i < count; i++) {
fw.write("测试java 文件操作/r/n");
}
fw.close();
long end3 = System.currentTimeMillis();
System.out.println("FileWriter执行耗时:" + (end3 - begin3) + " 豪秒");
//生成excel
long begin4=System.currentTimeMillis();
wb=Workbook.createWorkbook( new File( "c:/test.xls" ));
WritableSheet sheet0= wb.createSheet( "sheet1",0);
//System.out.print(wb.getNumberOfSheets());
int rownum=0;
int limint=1;
int snum=0;
for(int i=0;i<count;i++){
sheet0.addCell(new Label(0,rownum++,"测试java 文件操作"));
limint++;
if(limint>65530){
snum++;
wb.createSheet("sheet"+(wb.getNumberOfSheets()+1),wb.getNumberOfSheets()+1);//增加一个sheet
sheet0 = wb.getSheet(snum);
rownum = sheet0.getRows();
limint=0;
}
}
wb.write();
wb.close();
long end4=System.currentTimeMillis();
System.out.println("jxl生成excel执行耗时:" + (end4 - begin4) + " 豪秒");
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
以下结果经过多次执行,取常出现的数据,由于只是简单比较,不做详细统计。
1. 当count=1000的,即写文件1000行的时候,写出的文件大小为18.5KB:
FileOutputStream执行耗时:16 豪秒
BufferedOutputStream执行耗时:16 豪秒
FileWriter执行耗时:15 豪秒
jxl生成excel执行耗时:296 豪秒 文件大小为47KB
2.当count=10000的,即写文件10000行的时候,写出的文件大小为185KB:
FileOutputStream执行耗时:94 豪秒
BufferedOutputStream执行耗时:15 豪秒
FileWriter执行耗时:16 豪秒
jxl生成excel执行耗时:391 豪秒 文件大小为369KB
3.当count=100000的,即写文件100000行的时候,写出的文件大小为1856KB:
FileOutputStream执行耗时:594 豪秒
BufferedOutputStream执行耗时:94 豪秒
FileWriter执行耗时:78 豪秒
jxl生成excel执行耗时:2625 豪秒 文件大小为3592KB
4.当count=1000000的,即写文件1000000行的时候,写出的文件大小为18555KB:
FileOutputStream执行耗时:5625 豪秒
BufferedOutputStream执行耗时:1328 豪秒
FileWriter执行耗时:875 豪秒
执行生成excel的时候出现了异常:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
由以上数据可以看到,用文件流来写的速度比写excel的速度要快很多,生成的文件大小也比较小大小相差一半左右,而且从最后一项来看,写excel的时候对java虚拟机内存消耗也比较大,会报异常。
用流来写的三种方法中比较得出:如果不用缓冲流BufferedOutputStream,FileOutputStream写文件的是很不好的。当写 1000000行的文件的时候,FileOutputStream比FileWriter要慢4750毫秒, BufferedOutputStream比FileWriter慢553毫秒。
不要小看这几秒的时间。当操作的数据量很大的时候,这点性能的差距就会很大了。在通用数据迁移工具导出数据库2千万条记录生成sql脚本文件的时候,性能性能相差2分钟以上。
发表评论
-
文本域显示行数算法
2021-03-10 22:46 245每行显示字符数: showCount 总共字符数:tot ... -
[初级容易犯错的地方]JAVA方法中的参数用final来修饰的效果(转)
2020-11-23 16:52 198今天顺便看到这个文章,转发一下,因是很多初级者容易犯错的地 ... -
Java批量解析微信dat文件,微信图片破解
2020-02-17 20:33 1587package com.chinada.dms.test.y ... -
Spring Framework 5.0 入门篇(转)
2019-04-25 10:00 01.为什么学习Spring? 随着对Java EE ... -
类中内部类中的方法访问外部类中变量的示例(转)
2018-10-06 21:23 397lass Day10_11 { public static ... -
java连接ssh到服务器执行命令(免密码)
2018-07-10 09:00 0今天在做不同服务器间,免密码执行curl 命令 Java ... -
于Aviator的规则引擎Demo(转)
2018-05-03 09:26 1705编写不易,转载请注明(http://shihlei.itey ... -
va网络爬虫经验分享(转)
2018-04-20 10:33 537最近三年很少写博客,虽然一直从事IT行业,但更多的是管理工作 ... -
高级Java开发人员最常访问的几个网站(转)
2018-04-19 14:30 269这是高级Java开发人员最常访问的几个网站。 这些网 ... -
趣味算法图解,文科生都看懂了(转)
2018-04-17 17:22 827编者按 IDEA 是由 Sándor ... -
Java Security:公钥私钥、数字签名、消息摘要是什么 (转)
2018-04-13 10:10 379https://www.cnblogs.com/f119436 ... -
一文了解十大 Java 开发者必备测试框架!(转)
2018-04-10 13:55 333想要提升自己的自动化测试技能吗?本文将介绍10个优秀的 Ja ... -
深入理解 Java 多线程核心知识:跳槽面试必备(转)
2018-04-02 13:43 288多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并 ... -
11大Java开源中文分词器的使用方法和分词效果对比(转)
2018-03-19 15:37 419原文出处: 杨尚川 本文的目标有两个: 1、学会使用1 ... -
远程debug代码(转)
2018-03-16 16:45 976参考:http://blog.csdn.net/su ... -
微服务架构初探(转)
2018-03-16 16:39 572什么是微服务 ... -
你真的理解了MVC, MVP, MVVM吗?(转)
2018-03-15 15:26 504前言: 准备写这篇文章的时候 , 我自认为对MVC已经有深刻 ... -
JAR(Spring Boot)应用的后台运行配置(转)
2018-03-09 07:04 1066酱油一篇,整理一下关于Spring Boot后台运行的一些配 ... -
一位阿里架构师在2018年给每个程序员的小建议(转)
2018-03-01 15:54 534一位阿里架构师在2018年给每个程序员的小建议 1 ... -
Java 9 新特性,看这里就明白了(转)
2018-02-28 14:54 5181、Java9 新特性之---目 ...
相关推荐
04、导致JVM内存泄露的ThreadLocal详解_ev04、导致JVM内存泄露的ThreadLocal详解_ev04、导致JVM内存泄露的ThreadLocal详解_ev04、导致JVM内存泄露的ThreadLocal详解_ev04、导致JVM内存泄露的ThreadLocal详解_ev04、...
程序运行要用到的内存大于虚拟机能提供的最大内存就发生内存溢出了, 内存溢出的问题要看业务和系统大小而定,对于某些系统可能内存溢出不常见,但某些系统还是很常见的解决的方法
很好很强大,提供了很好很强大的解决方案。策略比较新颖,值得一下!
tomcat修改JVM内存配置(解决大项目内存溢出问题有效方案)
主要是JVM内存分配及简单的JVM性能调优
POI3.8版本之前的版本处理大量数据的导出Excel效果不是很理想,主要在与Excel2003版本单个Sheet的行限制为65536,大量数据的导出得分多个Sheet,针对这一点,客户就不会满意。其次,在实验过程中,大数据量的导出很...
该文档描述了开发测试环境中Docker及JVM内存限制部署方案
idea插件JVM内存工具JProfiler11,下载完,即可导入idea,可idea快捷打开使用。
JVM内存模型深度剖析与优化
(二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.(二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.
jvm内存反洗工具:
jvm 内存监控
1.jvm内存结构及功能概述 2.Jvm Heap 内存结构 3.Jvm 的内存分配
jvm内存模型,jvm脑图,jvm调优,jvm垃圾回收算法,jvm垃圾回收器,逃逸算法等总结。
用java内存监控工具生成的JVM内存日志,用jmap生成的
JVM 内存管理之道 JVM垃圾回收机制 JVM GC组合 JVM 内存监控工具
研究JVM内存泄露,通过JVM内存泄露的研究,防止JVM内存泄露
java获得jvm内存大小
jvm内存结构
Sun JVM原理与内存管理