小编DKS*_*ore的帖子

我什么时候应该使用ConcurrentSkipListMap?

在Java中,ConcurrentHashMap是否有更好的multithreading解决方案.那我ConcurrentSkipListMap什么时候应该用?这是一种冗余吗?

这两者之间的多线程方面是否常见?

java performance multithreading map concurrenthashmap

72
推荐指数
4
解决办法
3万
查看次数

原始类型的易失性还是​​同步?

在Java中,如果变量的大小小于或等于32位,则赋值是原子的,但如果大于32位则不是.

在双重或长期分配的情况下,使用什么(易失性/同步)会更有效?

喜欢,

  volatile double x = y;
Run Code Online (Sandbox Code Playgroud)

synchronized不适用于原始参数.在这种情况下如何使用synchronized?当然我不想锁定我的班级,所以this不应该使用.

java multithreading atomic volatile synchronized

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

如何在linux上找到所有基本软链接或其他目录或文件的硬链接的文件?

如何获取系统或某个目录中所有链接文件的列表.我曾经创建链接,但随着时间的推移,它们变得无法管理.我想要一个目录中所有这些链接的列表.有人可以帮忙吗?

linux shell symlink find hardlink

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

为什么三元运算给出了nullpointer而ifelse对应的呢?

我在下面的一个实例中得到NullPointerException,而它的对应运行顺利.

public static void main(String[] args){
    System.out.println(withTernary(null, null)); //Null Pointer
    System.out.println(withIfElse(null, null));  //No Exception
}

private static Boolean withTernary(String val, Boolean defVal){
    return val == null ? defVal : "true".equalsIgnoreCase(val);
}

private static Boolean withIfElse(String val, Boolean defVal){
    if (val == null) return defVal;
    else return "true".equalsIgnoreCase(val);
}
Run Code Online (Sandbox Code Playgroud)

在线版

在线版本中的台词main相反,它输出nullwithIfElse,然后失败withTernary.

我正在使用以下java版本

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java ternary-operator nullpointerexception

15
推荐指数
2
解决办法
343
查看次数

如何使用LinkedHashMap中的类似功能实现ConcurrentHashMap?

我使用LinkedHashMapaccessOrdertrue,随时允许最多500个条目作为数据的LRU缓存.但由于可扩展性问题,我想转向一些线程安全的替代方案.ConcurrentHashMap在这方面似乎很好,但缺乏的特点accessOrderremoveEldestEntry(Map.Entry e)发现LinkedHashMap.任何人都可以指向某些链接或帮助我简化实施.

java performance multithreading concurrenthashmap linkedhashmap

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

如何模拟Out of memory:请求的数组大小超过VM限制

我使用了太阳网站Out Of Memory帮助.引用的地方

内存不足:请求的阵列大小超过VM限制

这表示应用程序尝试分配大于堆大小的数组.例如,如果应用程序尝试分配512MB的数组但最大堆大小为256MB,则将抛出此错误.在大多数情况下,问题可能是堆大小太小或者错误导致应用程序尝试创建一个大小被计算为错误巨大的数组.

我试图模仿这个

import java.util.ArrayList;
import java.util.List;

public class JavaTest {
    public static void main(String[] args){
        long[] ll = new long[64*1024*1024];
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的机器上

javac *.java;java -Xmx256m JavaTest
Run Code Online (Sandbox Code Playgroud)

但上面的线正在生产

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at JavaTest.main(JavaTest.java:7)

我错过了什么?

更新: 我的java版本是

$java -version
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03)
Java HotSpot(TM) Server VM (build 14.1-b02, mixed mode)

java jvm out-of-memory

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

在空表上创建索引后插入数据或在oracle上插入数据后创建唯一索引?

哪个选项更好更快?在空表上创建索引或在插入数据后创建唯一索引后插入数据.我有大约10M行要插入.哪个选项会更好,以便我可以减少停机时间.

sql oracle indexing performance insert

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

Long.reverse(long)方法有什么用?

我在Long类中找到了一个方法

public static long reverse(long i) {..}

这种方法有什么用?

java api performance reverse long-integer

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

ConcurrentHashMap中是否可以有超过32个锁

我读到ConcurrentHashMap在多线程方面比Hashtable更好,因为在桶级别而不是映射宽锁定.每张地图最多可锁32次.想知道为什么32和为什么不超过32锁.

java performance multithreading locking concurrenthashmap

7
推荐指数
2
解决办法
3849
查看次数

用于文件读取的Java中哪个API具有最佳性能?

在我工作的地方,曾经有过每个文件超过百万行的文件.即使服务器内存超过10GB,8GB用于JVM,有时服务器会被暂停一段时间并扼杀其他任务.

我对代码进行了分析,发现虽然文件读取内存使用频繁增加千兆字节(1GB到3GB)然后突然恢复正常.似乎这种频繁的高内存和低内存使用会挂起我的服务器.当然这是由于垃圾收集.

我应该使用哪个API来读取文件以获得更好的性能?

现在我正在使用BufferedReader(new FileReader(...))读取这些CSV文件.

过程:我如何阅读文件?

  1. 我逐行阅读文件.
  2. 每行都有很少的列.基于我对应解析它们的类型(double中的cost列,int中的visit列,String中的keyword列等).
  3. 我在HashMap中推送符合条件的内容(访问> 0),最后在任务结束时清除该Map

更新

我这样读取30或31个文件(一个月的数据)并将符合条件存储在地图中.后来这张地图用于在不同的表格中获得一些罪魁祸首.因此必须读取并存储该数据.虽然我现在已经将HashMap部分切换到BerkeleyDB但是在读取文件时的问题是相同甚至更糟.

java api performance berkeley-db filereader

4
推荐指数
2
解决办法
3769
查看次数

为什么双括号初始化要求SerialVersionUID?

public static List<Long> abc = new ArrayList<Long>(){{ //Asks for SerialVersionUID
        abc.add(5L);
        abc.add(7L);
    }};

public static List<Long> abc = new ArrayList<Long>();//Does not need SerialVersionUID
    static{
        abc.add(5L);
        abc.add(7L);
    }
Run Code Online (Sandbox Code Playgroud)

java serialization

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

是否可以更改垃圾收集器线程的优先级?

Java垃圾收集器以优先级1运行,因此无法保证System.gc()在调用时实际执行.

有什么方法可以改变它的优先级吗?这将使我能够运行,如果我想.

java garbage-collection

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