我的java选项是:
java -Dsun.zip.disableMemoryMapping=true -Xmx18g -Xms8g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:InitiatingHeapOccupancyPercent=45 -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -XX:NewSize=1500m -XX:MaxNewSize=1500m
以下是我的gc日志:
2016-12-22T09:45:51.567+0800: 145356.468: [GC pause (G1 Evacuation Pause) (young), 4.0553815 secs] [Parallel Time: 4052.5 ms, GC Workers: 28] [GC Worker Start (ms): Min: 145356469.0, Avg: 145356469.4, Max: 145356469.9, Diff: 0.9] [Ext Root Scanning (ms): Min: 0.6, Avg: 1.0, Max: 1.8, Diff: 1.2, Sum: 29.1] [Update RS (ms): Min: 12.0, Avg: 12.4, Max: 13.2, Diff: 1.2, Sum: 348.4] [Processed Buffers: Min: 9, Avg: 13.5, Max: 24, Diff: 15, Sum: 379] [Scan RS (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 2.3] [Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 1.1] [Object Copy (ms): Min: 28.7, Avg: 1927.0, Max: 4037.8, Diff: 4009.1, Sum: 53956.0] [Termination (ms): Min: 0.0, Avg: 2111.2, Max: 4009.0, Diff: 4009.0, Sum: 59114.4] [Termination Attempts: Min: 1, Avg: 2.2, Max: 5, Diff: 4, Sum: 63] [GC Worker Other (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.1, Sum: 2.0] [GC Worker Total (ms): Min: 4051.4, Avg: 4051.9, Max: 4052.4, Diff: 1.0, Sum: 113453.2] [GC Worker End (ms): Min: 145360521.3, Avg: 145360521.3, Max: 145360521.4, Diff: 0.1] [Code Root Fixup: 0.1 ms] [Code Root Purge: 0.0 ms] [Clear CT: 0.4 ms] [Other: 2.4 ms] [Choose CSet: 0.0 ms] [Ref Proc: 0.4 ms] [Ref Enq: 0.0 ms] [Redirty Cards: 0.5 ms] [Humongous Register: 0.1 ms] [Humongous Reclaim: 0.0 ms] [Free CSet: 0.6 ms] [Eden: 1424.0M(1424.0M)->0.0B(1416.0M) Survivors: 76.0M->84.0M Heap: 3475.6M(8192.0M)->2071.7M(8192.0M)] [Times: user=54.84 sys=56.91, real=4.06 secs]
我的cpu有40个内核,有时gc会导致很多时间。我发现大部分时间花在对象复制上,我想知道在何种情况下,它会发生,我可以做些什么来优化gc...
[对象复制(ms):Min:28.7,Avg:1927.0,Max:4037.8,Diff:4009.1,Sum:53956.0]max比min大得多,也许我可以减去gc工人??
我使用-XX:LargePageSizeInBytes=32m,并将服务移动到另一台linux服务器(我发现cpu运行队列有时很大)。然后没有发现超过1秒的gc。
(英语不是我的第一语言,所以请原谅任何错误) 我使用SparkSQL从hive表中读取4.7TB的数据,并执行计数操作。做那件事大约需要1.6小时。而直接从HDFS txt文件读取和执行计数,只需要10分钟。这两个作业使用相同的资源和并行性。为什么RDD计数需要这么多时间? 配置单元表大约有30万列,序列化可能代价高昂。我检查了spark UI,每个任务读取大约240MB的数据,执行大约需要3.6
问题内容: 我注意到,使用基本操作系统Alpine与CentOS或Debian在Docker容器中安装Pandas和Numpy(它的依赖项)需要花费更长的时间。我在下面创建了一个小测试来演示时差。除了Alpine用来更新和下载构建依赖项以安装Pandas和Numpy的几秒钟之外,为什么setup.py所需的时间比Debian的安装要多70倍? 是否有任何方法可以使用Alpine作为基础映像来加快安
我的Gradle构建需要1分钟到2分钟,我不确定发生了什么。在事件日志中,我大部分时间都只看到一个条目 执行任务:[:app:GenerateDebugSources,:app:PrepareDebugunitTestDependencies,:app:MockableAndroidJar,:app:AssembleDebug] 我不知道这个任务在做什么,我检查了设置,希望这能有所改变,但我运气不
我遵循这个链接制作一个CRF模型。我使用以下命令制作模型。 模型制作成功,但我的训练数据非常多,花费了太多时间。当我仔细观察系统中发生的事情时。它只使用了我电脑的一个核心 我能否以使用计算机多个核心的方式运行此命令?看起来它是作为单个线程实现的。是否支持多线程?如果是,请分享。
我正在尝试执行以下操作:假设我有以下SELECT查询(请原谅德文列名): 这个查询大约需要4秒(数据库总共有大约100万条记录),返回大约400条记录。但是,当我想用以下语句更新这些相同的记录时 查询总是在取“永远”后超时。是我做错了什么,还是这种行为是意料之中的?
我不是Java新手,但我对垃圾收集知之甚少。现在我想通过一些实践经验来改变这一点。我的目标是延迟不到0.3秒,或者在极端情况下0.5秒也可以。 我有一个带有-Xmx50gb(-Xms50gb)的应用程序,并设置了以下其他GC选项: 但现在我偶尔会因为垃圾收集而长时间暂停5秒以上,尽管似乎有足够的可用内存。我发现的一个原因是: 为什么GCG1仍在为此进行“阻止世界”?(或者至少我看到它正好在这个时候