本文主要研究一下java9 gc log参数的迁移。
统一JVM及GC的Logging
java9引进了一个统一的日志框架,把gc相关的log输出及配置也给纳入进来了。
相关JEP(JDK Enhancement Proposal)
Xlog语法
-Xlog[:option] option := [<what>][:[<output>][:[<decorators>][:<output-options>]]] 'help' 'disable' what := <selector>[,...] selector := <tag-set>[*][=<level>] tag-set := <tag>[+...] 'all' tag := name of tag level := trace debug info warning error output := 'stderr' 'stdout' [file=]<filename> decorators := <decorator>[,...] 'none' decorator := time uptime timemillis uptimemillis timenanos uptimenanos pid tid level tags output-options := <output_option>[,...] output-option := filecount=<file count> filesize=<file size in kb> parameter=value
what
主要是配置tag及level
tag
其中all代表所有的tag,其他的如下:
add,age,alloc,annotation,aot,arguments,attach,barrier,biasedlocking,blocks,bot,breakpoint,bytecode,census,class,classhisto,cleanup,compaction,comparator,constraints,constantpool,coops,cpu,cset,data,defaultmethods,dump,ergo,event,exceptions,exit,fingerprint,freelist,gc,hashtables,heap,humongous,ihop,iklass,init,itables,jfr,jni,jvmti,liveness,load,loader,logging,mark,marking,metadata,metaspace,method,mmu,modules,monitorinflation,monitormismatch,nmethod,normalize,objecttagging,obsolete,oopmap,os,pagesize,parser,patch,path,phases,plab,preorder,promotion,protectiondomain,purge,redefine,ref,refine,region,remset,resolve,safepoint,scavenge,scrub,setting,stackmap,stacktrace,stackwalk,start,startuptime,state,stats,stringdedup,stringtable,subclass,survivor,sweep,system,task,thread,time,timer,tlab,unload,update,verification,verify,vmoperation,vtables,workgang
level
主要分off,trace,debug,info,warning,error
output
- stdout(`Sends output to stdout`) - stderr(`Sends output to stderr`) - file=filename(`Sends output to text file(s)`)
有如上三种,其中指定file的话,可以使用%p变量表示当前jvm的pid,用%t表示jvm的启动时间戳。比如
-Xlog:gc:demoapp-gc-%p-%t.log
输出的文件名如下:
demoapp-gc-1678-2018-03-01_21-44-18.log
decorators
不指定的话,默认是uptime, level, and tags这三个。比如
[3.080s][info][gc,cpu ] GC(5) User=0.03s Sys=0.00s Real=0.01s
实例
-Xlog:gc=trace:file=gctrace.txt:uptimemillis,pid:filecount=5,filesize=1024
tag为gc,levle为trace,rotate文件数为5,每个文件1M,文件名为gctrace.txt,decrotators为uptimemillis和pid
输出实例
[1110ms][1867] GC(2) Pause Remark 17M->17M(256M) 2.024ms [1110ms][1867] GC(2) Finalize Live Data 0.000ms [1110ms][1867] GC(2) Pause Cleanup 17M->17M(256M) 0.177ms [1112ms][1867] GC(2) Concurrent Cycle 7.470ms [2951ms][1867] GC(3) Pause Initial Mark (Metadata GC Threshold) 149M->30M(256M) 27.175ms [2951ms][1867] GC(4) Concurrent Cycle [2972ms][1867] GC(4) Pause Remark 32M->32M(256M) 5.132ms [2974ms][1867] GC(4) Finalize Live Data 0.000ms [2974ms][1867] GC(4) Pause Cleanup 32M->32M(256M) 0.214ms [2976ms][1867] GC(4) Concurrent Cycle 25.422ms
旧版GC相关参数迁移
Legacy Garbage Collection (GC) Flag | Xlog Configuration | Comment |
---|---|---|
G1PrintHeapRegions | -Xlog:gc+region=trace | Not Applicable |
GCLogFileSize | No configuration available | Log rotation is handled by the framework. |
NumberOfGCLogFiles | Not Applicable | Log rotation is handled by the framework. |
PrintAdaptiveSizePolicy | -Xlog:ergo*=level | Use a level of debug for most of the information, or a level of trace for all of what was logged for PrintAdaptiveSizePolicy. |
PrintGC | -Xlog:gc | Not Applicable |
PrintGCApplicationConcurrentTime | -Xlog:safepoint | Note that PrintGCApplicationConcurrentTime and PrintGCApplicationStoppedTime are logged on the same tag and aren't separated in the new logging. |
PrintGCApplicationStoppedTime | -Xlog:safepoint | Note that PrintGCApplicationConcurrentTime and PrintGCApplicationStoppedTime are logged on the same tag and not separated in the new logging. |
PrintGCCause | Not Applicable | GC cause is now always logged. |
PrintGCDateStamps | Not Applicable | Date stamps are logged by the framework. |
PrintGCDetails | -Xlog:gc* | Not Applicable |
PrintGCID | Not Applicable | GC ID is now always logged. |
PrintGCTaskTimeStamps | -Xlog:task*=debug | Not Applicable |
PrintGCTimeStamps | Not Applicable | Time stamps are logged by the framework. |
PrintHeapAtGC | -Xlog:gc+heap=trace | Not Applicable |
PrintReferenceGC | -Xlog:ref*=debug | Note that in the old logging, PrintReferenceGC had an effect only if PrintGCDetails was also enabled. |
PrintStringDeduplicationStatistics | -Xlog:stringdedup*=debug | Not Applicable |
PrintTenuringDistribution | -Xlog:age*=level | Use a level of debug for the most relevant information, or a level of trace for all of what was logged for PrintTenuringDistribution. |
UseGCLogFileRotation | Not Applicable | What was logged for PrintTenuringDistribution. |
旧版运行时参数迁移
Legacy Runtime Flag | Xlog Configuration | Comment |
---|---|---|
TraceExceptions | -Xlog:exceptions=info | Not Applicable |
TraceClassLoading | -Xlog:class+load=level | Use level=info for regular information, or level=debug for additional information. In Unified Logging syntax, -verbose:class equals -Xlog:class+load=info,class+unload=info. |
TraceClassLoadingPreorder | -Xlog:class+preorder=debug | Not Applicable |
TraceClassUnloading | -Xlog:class+unload=level | Use level=info for regular information, or level=trace for additional information. In Unified Logging syntax, -verbose:class equals -Xlog:class+load=info,class+unload=info. |
VerboseVerification | -Xlog:verification=info | Not Applicable |
TraceClassPaths | -Xlog:class+path=info | Not Applicable |
TraceClassResolution | -Xlog:class+resolve=debug | Not Applicable |
TraceClassInitialization | -Xlog:class+init=info | Not Applicable |
TraceLoaderConstraints | -Xlog:class+loader+constraints=info | Not Applicable |
TraceClassLoaderData | -Xlog:class+loader+data=level | Use level=debug for regular information or level=trace for additional information. |
TraceSafepointCleanupTime | -Xlog:safepoint+cleanup=info | Not Applicable |
TraceSafepoint | -Xlog:safepoint=debug | Not Applicable |
TraceMonitorInflation | -Xlog:monitorinflation=debug | Not Applicable |
TraceBiasedLocking | -Xlog:biasedlocking=level | Use level=info for regular information, or level=trace for additional information. |
TraceRedefineClasses | -Xlog:redefine+class*=level | level=info, =debug, and =trace provide increasing amounts of information. |
java9把gc log的选型及输出也给统一到了Xlog中,可以按照官方给出的迁移表进行迁移。
Java文档可以使用工具生成。 它目前以格式生成文档。 在java 9中,可以通过在命令行参数中使用选项生成格式的文档。 旧式的java文档 考虑F:\worksp\java9文件夹中有一个Java文件:Tester.java,其代码如下 - 可以运行jdk 7 的javadoc工具来生成文档。 使用标志运行jdk 9的javadoc工具以生成新类型的文档。 打开生成的文件,如下所示 -
过去,我通过安全策略文件启动了jstatd,如下所示:https://stackoverflow.com/a/14930180/1294116 但是,在Java9中,他们已经删除了文件,这意味着这个解决方案不再起作用。有人知道如何解决这个问题吗?(目前我又回到了获取错误)
本文向大家介绍Pytorch模型迁移和迁移学习,导入部分模型参数的操作,包括了Pytorch模型迁移和迁移学习,导入部分模型参数的操作的使用技巧和注意事项,需要的朋友参考一下 1. 利用resnet18做迁移学习 结果输出: input_tensor: torch.Size([1, 3, 100, 100]) out: torch.Size([1, 1000]) tensor([ 0.4010,
本文档介绍支持从哪些路径将数据迁移到 TiDB,包括从 MySQL 迁移到 TiDB 和从 CSV/SQL 文件迁移到 TiDB。 各类数据迁移 参阅数据迁移概述及各类迁移内容。
类是在Java 8中引入的,可以通过设置其值和状态显式来完成。 它可以用作。 它支持未来完成时触发的相关函数和操作。 在Java 9中,CompletableFuture API进一步得到了增强。 以下是对API进行的相关更改。 支持延迟和超时。 改进了对子类的支持。 添加了新的工厂方法。 1. 支持延迟和超时 如果在给定超时之前未完成,则此方法使用给定值完成。 如果在给定的超时之前没有完成,则此
主要内容:takeWhile(Predicate接口),dropWhile(Predicate接口)流(Stream)是在Java中引入的,以帮助开发人员从一系列对象中执行聚合操作。在Java 9中,使用较少的方法就可以使流更好。 takeWhile(Predicate接口) 语法 方法获取所有值直到返回。 在有序流的情况下,它返回一个流,该流包含从此流中匹配给定的元素的最长前缀。 示例 方法获取所有,和值,然后当字符串为空,它将停止执行。 dropWhile(Predicate接口) 语法 方