小编Pet*_*rey的帖子

在Array中从ArrayList <String []>更改为String [] []

改变ArrayList<String[]>String[][]/Object[][]桌面的最简单方法是什么?

我尝试使用size()方法,但这种类型的列表没有简单的方法get().

感谢帮助.

_rowTable[j][0] = new String[_listSelect.size()][columnCount];

for(int j=0; j < _listSelect.size(); j++)
 //   for(int k=0; k < columnCount; k++)
        _rowTable[j][0] = _listSelect.get(0);
Run Code Online (Sandbox Code Playgroud)

如何正确使用第二个循环?

java arraylist

2
推荐指数
1
解决办法
108
查看次数

未处理的异常:FileNotFoundException

我在java中读取文件时遇到一些问题:我的文件是例如:

3,4
2
6
4
1
7
3
8
9
Run Code Online (Sandbox Code Playgroud)

第一行3和4是数组A和B的长度,然后是每个数组的元素.我做的

import java.io.*;
import java.util.Arrays;

public class Progetto  {

    public static void main(String args[])
      {
// Open the file that is the first 
// command line parameter

            FileInputStream fstream = new FileInputStream("prova.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine = br.readLine(); // step 1

            if (strLine != null) {
              String[] delims = strLine.split(","); // step 2

              // step 3
              int[] a = new int[Integer.parseInt(delims[0])];
              int[] b = new int[Integer.parseInt(delims[1])]; …
Run Code Online (Sandbox Code Playgroud)

java bufferedreader

2
推荐指数
2
解决办法
1万
查看次数

如果我创建任意数量的String对象,JVM是否会耗尽PermGen空间?

假设我编写了一个程序,它创建了很多String对象和intern()它们:

String someString = param1 + param2;
someString.intern();
Run Code Online (Sandbox Code Playgroud)

这对于一小组字符串来说很好,但是如果我尝试创建十亿个字符串String呢?(或者说亿亿亿?)据我所知,JVM 在PermGen区域为s 维护一个常量池,而PermGen没有得到GC -ed.String

因此,如果我String在循环中创建了过多的对象,但是我删除了对它们的引用,那么它们将得到GC -ed(我将用尽PermGen空间)吗?这些String都是独一无二的,没有任何重复.

java memory string jvm permgen

2
推荐指数
1
解决办法
254
查看次数

Java创建新对象的性能

我有以下课程.

class MyObject implements Serializable {
    private String key;
    private String val;
    private int num;

    MyObject(String a, String b, int c) {
        this.key = a;
        this.val = b;
        this.num = c;
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要创建一个对象列表,重复调用以下方法(比如10K或更多)

public void addToIndex(String a, String b, int c) {
    MyObject ob = new MyObject(a,b,c);
    list.add(ob); // List<MyObject>
}
Run Code Online (Sandbox Code Playgroud)

我使用分析器来查看内存占用,并且由于每次创建对象而增加了很多.有没有更好的方法呢?我正在将列表写入磁盘.

编辑:一旦列表完全填充,这就是我写的方式.一旦内存超出值(列表大小),是否有一种方法可以追加.

ObjectOutputStream oos = new ObjectOutputStream(
                        new DeflaterOutputStream(new FileOutputStream(
                                list)));
                oos.writeObject(list);
                oos.close();
Run Code Online (Sandbox Code Playgroud)

java performance file-io list object

2
推荐指数
1
解决办法
1455
查看次数

Java简单泛型

如何使用C++ tempates之类的东西替换这两个函数?

public void verify(final int[] array, final int v) {
    for ( final int e : array ) if ( e == v || v == e  ) return;
    abort_operation();
}

public void verify(final double[] array, final double v) {
    for ( final double e : array ) if ( e == v || v ==  e  ) return;
    abort_operation();
}
Run Code Online (Sandbox Code Playgroud)

java templates

2
推荐指数
1
解决办法
103
查看次数

在java中以MB读取大文件的最佳方法

我正在阅读帖子,它说使用BufferedReader或MappedByteBuffer.我决定用291.0 MB文件自己测试,但仍然无法决定

    BufferedReader reader = new BufferedReader(new FileReader("/Users/rachana/part-00000"));
    String line = null;
    while((line = reader.readLine())!=null) {
        System.out.println(line);
    }


    ~~~~~~ Heap utilization in MB ~~~~~~
    Start Date  21:10:20
    End Date 21:17:48
    Time used 448 second
           7.50 min
    Used Memory In MB:28
    Free Memory:81
    Total Memory:109
    Max Memory:1820
Run Code Online (Sandbox Code Playgroud)

使用MappedByteBuffer

RandomAccessFile aFile = new RandomAccessFile
                ("/Users/rachana/part-00000", "r");
        FileChannel inChannel = aFile.getChannel();
        MappedByteBuffer buffer = inChannel.map(FileChannel.MapMode.READ_ONLY, 0, inChannel.size());
        buffer.load(); 
        for (int i = 0; i < buffer.limit(); i++)
        {
            System.out.print((char) buffer.get());
        }
        buffer.clear(); // …
Run Code Online (Sandbox Code Playgroud)

java performance file-io memory-mapped-files

2
推荐指数
1
解决办法
2333
查看次数

文件大小缓存和Java中文件大小的高效检索

我需要确定一个非常大的字符编码文件的大小.读取该文件需要花费大量时间.

我的理解是,当首次创建/修改文件时,大小会被缓存,因此操作系统可以在请求大小时(例如,文件管理器)快速检索该值.(例如,在win explorer中打开大文件的属性对话框时似乎很快)

假设以上情况属实,可以用Java检索吗?我原以为length()读取文件来确定大小......或者它实际上是否获得了这个缓存的大小?或者,File对象的创建是否会读取/检索缓存的大小?

我自己的研究还没有能够回答这些问题.

我理解我会得到一些帮助

谢谢

java file filesize

1
推荐指数
2
解决办法
966
查看次数

分页空间,JVM和内存映射文件(nio)

我最近阅读了一篇文章,声称使用内存映射文件可以节省调页空间.

问题1:为什么这是一个重要的好处?

也就是说,为了澄清,我会提出这个问题:

问题2:如果我有一个JVM,在标准的Linux发行版上运行(比如说)1G或RAM,而我打开一个800MB的文件 - 调页空间将占用JVM内存的百分比是多少?

此外,该文件将占用的其他资源是什么?

我想我要问的真正问题是:

问题3:在处理JVM读取的大文件时,我们如何定义"调页空间",以及内存映射文件为应用程序提供的关键(非显而易见)优点是什么(即它们何时是常规旧文件的理想替代品)流)?

我假设这与使用JVM文件内存映射实现分页的方式有关.

java file-io jvm memory-management nio

1
推荐指数
1
解决办法
1926
查看次数

在java中存储地图的内存效率最高?

我必须在java中存储键值对,这样可以提高内存效率,并且在直接在文件中读写时更节省时间?

  1. 番石榴中的表 <string,double,double>
  2. 在番石榴<string,object>中映射对象包含两个double值.
  3. java <string,object>中的Hashmap,其中object包含两个double值.

你也可以推荐一些其他的方法.

java memory guava

1
推荐指数
1
解决办法
1085
查看次数

java引用需要多少堆空间?

几乎所有平台的int都需要4个字节.Java参考怎么样?

Map<String, String> m = null;
Run Code Online (Sandbox Code Playgroud)

变量m占用32位/ 64位JVM的空间多少?

byte[] b = new byte[10];
Run Code Online (Sandbox Code Playgroud)

上面的字节数组占用10个字节,但是对b的引用需要多少额外空间?我认为b至少包括一个地址和一个长度,任何人都可以给我详细信息?

java memory jvm

1
推荐指数
1
解决办法
1366
查看次数