小编Eug*_* To的帖子

尽管(Max)MetaspaceSize,Java 8仍为Metaspace保留最小1G

Java 8在启动后为Metaspace预留了1G.这意味着最小元空间大小为1G.但我将MetaspaceSize设置为300米,将MaxMetaspaceSize设置为400米.为什么Java会保留更多,然后我允许?

Java版本

$ java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)

VM标志

$ jcmd 21689 VM.flags
21689:
-XX:CICompilerCount=3 -XX:ConcGCThreads=1 -XX:G1HeapRegionSize=1048576 -XX:InitialHeapSize=62914560 -XX:+ManagementServer -XX:MarkStackSize=4194304 -XX:MaxHeapSize=1006632960 -XX:MaxMetaspaceSize=399998976 -XX:MaxNewSize=603979776 -XX:MetaspaceSize=299999232 -XX:MinHeapDeltaBytes=1048576 -XX:NativeMemoryTracking=summary -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseFastUnorderedTimeStamps -XX:+UseG1GC 
Run Code Online (Sandbox Code Playgroud)

NMT

[jetty9-proxy@bm01 bin]$ jcmd 21689 VM.native_memory
21689:

Native Memory Tracking:

Total: reserved=2769543KB, committed=1311159KB

-                     Class (reserved=1221904KB, committed=197904KB)
                            (classes #36543)
                            (malloc=3344KB #44041) 
                            (mmap: reserved=1218560KB, committed=194560KB) 
Run Code Online (Sandbox Code Playgroud)

就在开始之后

Total: reserved=2402748KB, committed=150796KB     

-                     Class (reserved=1056956KB, committed=7868KB)
                            (classes #1300) …
Run Code Online (Sandbox Code Playgroud)

java jvm jvm-hotspot jvm-arguments

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

Collectors.toMap无法编译

此代码无法编译

List<String> pairs = new ArrayList<>();
System.out.println(pairs.stream().collect(Collectors.toMap(x -> x.split("=")[0], x -> x.split("=")[1])));
Run Code Online (Sandbox Code Playgroud)

编译错误是:方法split(String)未定义为System.out.println中的Object错误类型(pairs.stream().collect(Collectors.toMap(x - > x.split("=")[0] ,x - > x.split("=")[1])));

但这个编译很好

List<String> pairs = new ArrayList<>();
Map<String,String> map = pairs.stream().collect(Collectors.toMap(x -> x.split("=")[0], x -> x.split("=")[1]));
System.out.println(map);
Run Code Online (Sandbox Code Playgroud)

有人可以解释原因吗?

更多信息

这是intellij 12; jdk1.8.0_11; 窗户64

java java-stream

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

G1GC OutOfMemory太早了

我的测试代码:

int SIZE = 1900;
int[][] array = new int[SIZE][];
for (int i = 0; i < SIZE; i++) {
  array[i] = new int[1024 * 1024 / 4]; // 1MB
  Thread.sleep(10);
  if (i % 100 == 0 && i != 0) {
    System.out.println(i + "Mb added");
  }
}
Run Code Online (Sandbox Code Playgroud)

我在java 8中使用参数启动它 -Xmx2048m -XX:+UseG1GC -XX:+PrintGCDetails

当仅消耗1G时,它与OutOfMemory失败.

Heap
garbage-first heap   total 2097152K, used 1048100K [0x0000000080000000, 0x0000000080104000, 0x0000000100000000)
region size 1024K, 1 young (1024K), 0 survivors (0K)
Metaspace       used 3273K, capacity 4496K, committed 4864K, …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection jvm g1gc

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

java 8 lambda ambiguous runnable和callback

Executors.newFixedThreadPool(3).submit(() -> {doSmth();});
Run Code Online (Sandbox Code Playgroud)

"模糊方法调用.在ExecutorService中提交(Callable)并在ExecutorService匹配中提交(Runnable)."

怎么解决?我知道我可以使用匿名类,但我想使用Function.

java java-8

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

'distinct' 是 ClickHouse 的普通操作吗?

我想使用 ClickHouse 进行营销。大多数时候,他们不仅想知道有多少人使用某些功能,还想知道发送垃圾邮件的确切电子邮件。将 ClickHouse 用于此类目的是否是一个不错的选择(从表中选择 DISTINCT 电子邮件...)?“select COUNT”和“select DISTINCT”之间的性能有什么区别?

clickhouse

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

设置 IBM MQ 超时

当我打电话时com.ibm.mq.MQQueue#put(MQMessage,MQPutMessageOptions)它可能会挂起。如何为该方法设置超时?同样的问题是针对com.ibm.mq.MQQueue#get(MQMessage,MQGetMessageOptions)

java ibm-mq

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