请教大神关于java频繁读写速度变慢内存增加的问题

问题描述

最近在写个程序需往同时往几万的文件中写数据,测试时发现写20000左右的时候问题不大,速度也很快,大概20s左右就能完成,但是如果写10万个文件时,电脑内存会不断增加,写入速度也越来越慢,具体是什么原因呢?因为考虑到可能同时打开文件数量过多的问题,只是用6个线程来操作写入操作。增加的内测在任务管理器中也没发现突然增加的什么进程,而且看各进程的详细信息很明显的总量大小没有达到实际显示的内存使用率啊!

解决方案

解决方案二:
Linux系统吗?linux系统有个最大打开文件数,不知道有没有影响。jdk的bin目录下有个jvisualvm.exe,可以通过它来看看堆内存、CPU、线程等的使用情况也可以在变慢的时候做个线程快照分析下各个线程在某一刻的状态
解决方案三:
引用1楼w405112941的回复:

Linux系统吗?linux系统有个最大打开文件数,不知道有没有影响。jdk的bin目录下有个jvisualvm.exe,可以通过它来看看堆内存、CPU、线程等的使用情况也可以在变慢的时候做个线程快照分析下各个线程在某一刻的状态

引用1楼w405112941的回复:

Linux系统吗?linux系统有个最大打开文件数,不知道有没有影响。jdk的bin目录下有个jvisualvm.exe,可以通过它来看看堆内存、CPU、线程等的使用情况也可以在变慢的时候做个线程快照分析下各个线程在某一刻的状态

在windows下测试的,因为只开了6个线程读写文件,应该不是打开文件数的问题吧,我先试试看你给的方法,谢谢

时间: 2024-08-03 08:59:58

请教大神关于java频繁读写速度变慢内存增加的问题的相关文章

java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神

问题描述 java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神 java中空字符串可以用indexOf么?如果用了是不是会报错?请教大神 解决方案 可以啊,只要是非null的字符串类型的变量都可以调用string类的这个方法的. 解决方案二: public class NullStringTest { public static void main(String[] args) { String s1 = null; //空指针异常 // System.out.println

java多线程问题,请教大神,多谢

问题描述 java多线程问题,请教大神,多谢 class Res{ String name; String sex;}class Input implements Runnable{ private Res r;//这句是什么意思?跟Res r = new Res();有什么区别? Input(Res r) { this.r=r; } public void run() { int x = 0; while(true) { if(x==0) { r.name=""mike"&

系统-请教大神:我win7电脑Java开发程序,部署到Linux云服务器,如何实现调用另一套VB开发的程序

问题描述 请教大神:我win7电脑Java开发程序,部署到Linux云服务器,如何实现调用另一套VB开发的程序 我win7电脑Java开发程序,部署到Linux云服务器,如何实现调用另一套VB开发的程序: 这套VB开发的程序是win平台的.急! 比如以下情况:比如门房有台电脑,win系统的,联网,打开我的系统,扫码,调用 VB,也就是说,在同一台电脑里面去实现, 可能不?? 解决方案 只能把VB程序放到另一台win的机器上,然后Linux云服务器通过http等,发送请求给VB的机器

请教大神们一个java包装类的问题

问题描述 请教大神们一个java包装类的问题 请教大神们一个java包装类的问题, String str = "abc"; String str2 = "abc"; System.out.println(str == str2); Integer i = Integer.valueOf(1); Integer i2 = Integer.valueOf(1); System.out.println(i ==i2); 我知道str和str2是存放在字符串常量池中的,所以

请教大神java中排序的问题

问题描述 请教大神java中排序的问题 网上找排序的资料,有的说第一个是冒泡,有的说第二个,个人感觉第二个,但是不确定,求大神教我, public static void mySort1(int[] data){ for (int i = 0; i < data.length; i++) { for (int j = i; j < data.length; j++) { if(data[i] < data[j]) { int tmp = data[i]; data[i] = data[j

java-刚学JAVA有个小问题请教大神~

问题描述 刚学JAVA有个小问题请教大神~ public class Demo2 { public static Void main(String []args) { int a=12; if(a>18) { System.out.println("a>18"); }else if(a>10&&a<=18) { System.out.println("a>10 && a<=18"); }else {

p#-java中集合的问题请教大神

问题描述 java中集合的问题请教大神 在Collection集合中Collection col = new ArrayList(); 和ArrayList arr = new ArrayList(); 这两个有什么区别吗! 解决方案 没有什么区别,ArrayList是Collection的实现类. 解决方案二: 举个例子吧,collection是爹,arrayList是儿子,儿子的功能肯定大于等于爹的,但是你用父类变量去引用子类对象,那么在调用方法时,如果想调用儿子的特有功能,就不行了.这是动

html-本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题

问题描述 本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题 FIREFOX浏览器,代码如下: HTML代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @import url(template/default/styl

HttpURLConnection异常 请教大神

问题描述 HttpURLConnection异常 请教大神 URL url = new URL(strUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setRequestMethod("POST");DataOutputStream out = new DataOutputStream( conn