我找到了一个资料来源,描述了使用的默认 gc 根据可用资源而变化。看来jvm使用g1gc或serial gc取决于硬件和操作系统。
在某些硬件和操作系统配置上默认选择串行收集器
有人可以指出关于具体标准是什么以及如何在 dockerized/kubernetes 环境中应用的更详细的资料来源吗?换句话说:
可以将k8s中pod的资源请求设置为例如。1500 mCpu 让 jvm 使用串行 gc 并更改为 2 Cpu 将默认 gc 更改为 g1gc?何时使用哪个 gc 的限制是否会根据 jvm 版本(11 与 17)而变化?
使用JDK11在我的项目上运行测试在调用Maven Aether时,我在此行遇到了失败:
下载错误依赖项时会发生这种情况:
公地MATH3:公地MATH3
我的假设是我面临一个JDK11错误:
- https://stackoverflow.com/questions/52016415/jdk-11-ssl-error-on-valid-certificate-working-in-previous-versions
Run Code Online (Sandbox Code Playgroud)
如果是问题,这怎么可以解决?
由于stackoverflow限制,Stacktrace部分被截断:
[INFO] [ERROR] Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:DEV-SNAPSHOT:configure (configure) on project test-plugins: Failed to collect dependencies at org.apache.jmeter:ApacheJMeter_components:jar:2.13 -> org.apache.jmeter:jorphan:jar:2.13 -> commons-math3:commons-math3:jar:3.4.1: Failed to read artifact descriptor for commons-math3:commons-math3:jar:3.4.1: Could not transfer artifact commons-math3:commons-math3:pom:3.4.1 from/to JBoss (https://repository.jboss.org/nexus/content/repositories/thirdparty-releases/): extension (10) should not be presented in server_hello -> [Help 1]
[INFO] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:DEV-SNAPSHOT:configure (configure) on project test-plugins: Failed to collect dependencies at org.apache.jmeter:ApacheJMeter_components:jar:2.13 -> org.apache.jmeter:jorphan:jar:2.13 -> …Run Code Online (Sandbox Code Playgroud) 我尝试在最新的Java 11上运行我的项目.一切正常,除了特定的文件记录器.日志在以前的Java版本(10,9,8)上运行良好,但在Java 11上则不行.
在服务器运行期间,我只看到1个警告:
警告:不支持sun.reflect.Reflection.getCallerClass.这会影响性能.
这是我的配置:
<Configuration>
<Appenders>
<RollingFile name="postgresDBLog" fileName="${sys:logs.folder}/postgres.log"
filePattern="${sys:logs.folder}/archive/postgres.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="workersLog" fileName="${sys:logs.folder}/worker.log"
filePattern="${sys:logs.folder}/archive/worker.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="statsLog" fileName="${sys:logs.folder}/stats.log"
filePattern="${sys:logs.folder}/archive/stats.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
<RollingFile name="userLog" fileName="${sys:logs.folder}/blynk.log"
filePattern="${sys:logs.folder}/archive/blynk.log.%d{yyyy-MM-dd}">
<PatternLayout>
<pattern>%d{HH:mm:ss.SSS} %-5level- %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="cc.blynk.server.workers" level="debug" additivity="false">
<appender-ref ref="workersLog"/>
</Logger>
<Logger name="cc.blynk.server.workers.StatsWorker" level="debug" additivity="false">
<appender-ref ref="statsLog"/>
</Logger>
<Logger name="cc.blynk.server.db" level="debug" additivity="false">
<appender-ref ref="postgresDBLog"/> …Run Code Online (Sandbox Code Playgroud) (更清楚)
你可以找到..._linux-x64_bin.rpm,..._windows-x64_bin.exe而jre在Oracle的官方网站(点击每一个).但是在哪里jre?!
另外,JRE不包括JDK.我期待C:\Program Files (x86)\Common Files\Oracle\Java安装javapath.
我们的应用程序的最终用户是否需要安装JDK?
我从官方网站下载并安装了Oracle JDK 11 .我安装了 PATH和javapath_target_3015921(在Windows机器上一台Linux机器和第二对第一).但发现了意外的事情!JRE在哪里?
这是CentOS 7上安装路径的快照.如您所见,没有..._linux-x64_bin.rpm文件夹:
# ls /usr/java/jdk-11.0.1/
bin conf include jmods legal lib README.html release
Run Code Online (Sandbox Code Playgroud)
关于Oracle JDK 8的相同快照(..._windows-x64_bin.exe特别参见文件夹):
# ls /usr/java/jdk1.8.0_191-amd64/
bin lib src.zip
COPYRIGHT LICENSE THIRDPARTYLICENSEREADME-JAVAFX.txt
include man THIRDPARTYLICENSEREADME.txt
javafx-src.zip README.html
jre release
Run Code Online (Sandbox Code Playgroud)
Windows机器上的相同快照:
> dir /b "C:\Program Files\Java\jdk-11.0.1" …Run Code Online (Sandbox Code Playgroud) 我已经安装了 .NET 6(版本6.0.100-rc.1.21458.32)和 Visual Studio 2020 Preview(尽管它可能不是先决条件)。
我正在尝试调试 hello-world 应用程序,但收到有关 Java 的构建错误。
C:\Program Files\dotnet\packs\Microsoft.Android.Sdk.Windows\31.0.100-rc.1.12\targets\Microsoft.Android.Sdk.Tooling.targets(20,5): error XA0031:
Java SDK 11.0 or above is required when using .NET 6 or higher.
Run Code Online (Sandbox Code Playgroud)
我已经安装了 Java 17 设置Path,并指向 Visual Studio 设置中的 Java 开发工具包位置(工具->选项->Xamarin->Android 设置)。因为这不起作用,我已将 JDK 位置设置为 Microsoft 的 openjdk,但它仍然不起作用。
这是怎么回事?
我正在运行 KeyCloak 服务器来验证想要访问 Spring Boot/Spring Web REST API 的用户。但是,尝试进行身份验证时发生错误。
以下工作:
http://localhost:8080/path/to/restapi白标错误页面 此应用程序没有明确的 /error 映射,因此您将其视为后备。
这是打印到 Spring Boot 控制台的错误:
Caused by: java.lang.ClassNotFoundException: java.security.acl.Group
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
... 33 common frames omitted
Run Code Online (Sandbox Code Playgroud)
KeyCloak 服务器显示该会话对于该应用程序的用户来说是活动的。但是,由于上述缺少的类,认证过程永远不会完成。
Java 9+ 中是否有更便宜的方法调用来保持其安全点?
JVM 在运行时移除安全点以提高效率,但这会使分析和监控代码变得更加困难。出于这个原因,我们特意在精心挑选的地方添加了琐碎的调用,以确保存在安全点。
public static void safepoint() {
if (IS_JAVA_9_PLUS)
Thread.holdsLock(""); // 100 ns on Java 11
else
Compiler.enable(); // 5 ns on Java 8
}
public static void optionalSafepoint() {
if (SAFEPOINT_ENABLED)
if (IS_JAVA_9_PLUS)
Thread.holdsLock("");
else
Compiler.enable();
}
Run Code Online (Sandbox Code Playgroud)
在 Java 8 上,这种开销很好,但Compiler.enable()在 Java 9+ 中被优化掉了,所以我们必须使用更昂贵的方法,或者不启用此功能。
编辑:除了分析器之外,我还使用了safepoint()从中获取更好的细节,Thread.getStackTrace()以便应用程序可以对其自身进行分析,例如,当执行操作需要很长时间时。
我正在使用并尝试在一个裸项目react native中使用expo ,但是每当我尝试使用命令运行应用程序时,我都会收到此错误:npm run android
Execution failed for task ':expo-modules-core:compileDebugJavaWithJavac'.
> Could not resolve all files for configuration ':expo-modules-core:androidJdkImage'.
> Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
> Execution failed for JdkImageTransform: /home/dukizwe/Android/Sdk/platforms/android-31/core-for-system-modules.jar.
> jlink executable /usr/lib/jvm/java-14-openjdk-amd64/bin/jlink does not exist.
Run Code Online (Sandbox Code Playgroud)
我使用的是linux操作系统,Android studio和JDK都已正确安装。
文件夹内部的/usr/lib/jvm/结构如下所示:
我不知道为什么它在java-14-openjdk-amd64文件夹中查找,因为在该文件夹中没有jlink可执行文件。
在android studiosi中SDK Location指向java-11-openjdk. 有什么帮助吗?
我在使用 . 测试一些时区时发现了一个奇怪的 java 差异ZonedDateTime。我试图解析 1970 年之前的日期,发现结果在 java 版本之间发生变化。1932 年荷兰的偏移量是+00:19。有谁知道为什么会发生这种情况?我觉得这可能与时区数据库项目( https://github.com/eggert/tz )中欧洲时区的捆绑有关,但我不确定。有没有办法获得java中的旧行为?就像设置一样?
ZonedDateTime zdt = LocalDateTime.parse("1932-10-20T10:19:32.000").atZone(ZoneId.of("Europe/Amsterdam"));
System.out.println(zdt);
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.append(ISO_LOCAL_DATE)
.appendLiteral('T')
.appendValue(HOUR_OF_DAY, 2)
.appendLiteral(':')
.appendValue(MINUTE_OF_HOUR, 2)
.optionalStart()
.appendLiteral(':')
.appendValue(SECOND_OF_MINUTE, 2)
.optionalStart()
.appendFraction(NANO_OF_SECOND, 3, 3, true)
.appendOffset("+HH:MM", "Z")
.toFormatter();
System.out.println(formatter.format(zdt));
System.out.println(
java.time.zone.ZoneRulesProvider
.getVersions("UTC")
.lastEntry()
.getKey()
);
Run Code Online (Sandbox Code Playgroud)
结果 Temurin (java jdk) 11.0.16 (预期输出),最后一行显示时区数据库版本:
1932-10-20T10:19:32+00:19:32[Europe/Amsterdam]
1932-10-20T10:19:32.000+00:19
2022a
Run Code Online (Sandbox Code Playgroud)
Temurin 11.0.17 的结果:
1932-10-20T10:19:32Z[Europe/Amsterdam]
1932-10-20T10:19:32.000Z
2022c
Run Code Online (Sandbox Code Playgroud)
编辑:从 17.0.5 开始,JDK 17 中也存在一个问题:
铁木林 17.0.4:
1932-10-20T10:19:32+00:19:32[Europe/Amsterdam]
1932-10-20T10:19:32.000+00:19
2022a
Run Code Online (Sandbox Code Playgroud)
铁木林 …
运行我的 eclipse 插件时出现以下错误。Eclipse 使用 4.12 和 java11。它曾经在 eclipse 4.6.3 + java8 中工作正常。
javax.xml.bind.JAXBException: Provider com.sun.xml.internal.bind.v2.ContextFactory not found
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory cannot be found by com.my.cep.studio.cluster.topology_0.0.0]
!ENTRY com.my.cep.diagramming 4 0 at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:146)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:289)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:412)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:375)
at com.my.cep.studio.cluster.topology.editors.ClusterTopologyDiagramManager.parseFile(ClusterTopologyDiagramManager.java:193)
at com.my.cep.studio.cluster.topology.editors.ClusterTopologyDiagramManager.openModel(ClusterTopologyDiagramManager.java:175)
at com.my.cep.diagramming.drawing.BaseDiagramManager.createDrawingCanvas(BaseDiagramManager.java:233)
at com.my.cep.diagramming.drawing.DiagramManager$2.run(DiagramManager.java:259)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory cannot …Run Code Online (Sandbox Code Playgroud) java-11 ×10
java ×8
jvm ×2
.net ×1
android ×1
eclipse ×1
eclipse-rcp ×1
expo ×1
installation ×1
java-14 ×1
java-17 ×1
keycloak ×1
log4j2 ×1
maui ×1
maven ×1
maven-plugin ×1
react-native ×1
spring-boot ×1
ssl ×1
tzdata ×1