Tag: jvm

为什么Math.sin()委托给StrictMath.sin()?

我想知道,当我在Reddit线程中发现问题时,为什么Math.sin(double)委托给StrictMath.sin(double) 。 提到的代码片段如下所示(JDK 7u25): Math.java : public static double sin(double a) { return StrictMath.sin(a); // default impl. delegates to StrictMath } StrictMath.java : public static native double sin(double a); 第二个声明是native ,对我来说是合理的。 Math指出: 鼓励代码生成器使用特定于平台的本机库或微处理器指令(如果可用) 问题是 :是不是本机库实现了StrictMath平台特定的? JIT比安装的JRE更了解平台(请专注于这种情况)? 换句话说,为什么Math.sin()本身不是原生的?

JVM自动终止时如何生成线程转储

问题场景:在sonic MF容器(jvm)中注意到这个问题。容器托管了一些负责db操作和消息转换的java服务。一旦启动,容器运行正常2-3周并自行终止而不丢弃任何例外。 经过大量研究,我们无法找出导致jvm(MF容器)关闭的原因或原因。 有什么方法可以在jvm自动关闭时获取线程转储? 我正在使用java 1.6。 我应该遵循这个问题的其他方法吗? 提前致谢。

不同的(HotSpot)JVM线程类型有什么作用?

我看到HotSpot JVM中实现了六种线程类型:VMThread,CGCThread,PGCThread,JavaThread,CompilerThread和WatcherThread。 但是我不知道哪种线程类型正在做什么。 这是我到目前为止所理解的: VMThread:运行垃圾收集器之类的VM任务。 CGCThread:并发垃圾收集器。 PGCThread:并行垃圾收集器(与CGC的差异?)。 JavaThread:程序的线程,我想。 CompilerThread:编译器的一个线程? WatcherThread:? 其他问题:其他JVM呢?

Android studio中的构建gradle错误

我是Android的新手.i在Android工作室导入github项目。 但我看到这个问题`错误:java.lang.OutOfMemoryError:Java堆空间 错误:java.lang.OutOfMemoryError:Java堆空间。 请在项目的gradle.properties文件中为Gradle分配更多内存。 例如,gradle.properties文件中的以下行将最大Java堆大小设置为1,024 MB: org.gradle.jvmargs = -Xmx1024m 阅读Gradle的配置指南 阅读Java的堆大小 ican没有解决这个问题。 我该怎么做才能解决这个问题?

将默认Java VM更改为客户端

我在Fedora 17上安装了Oracle的Java,我注意到在使用java -version命令时会返回它 java version “1.7.0_05” Java(TM) SE Runtime Environment (build 1.7.0_05-b05) Java HotSpot(TM) 64-Bit Server VM (build 23.1-b03, mixed mode) Java似乎默认运行-server选项。 帮助文本出现了 -server to select the “server” VM The default VM is server, because you are running on a server-class machine. 有没有办法将默认值更改为客户端?

如何为jar文件设置最大jvm-memory(XMX)

如何在不向程序添加额外批处理脚本的情况下设置最大jvm内存。 答案如下。

在OutOfMemoryError的情况下Java进程的行为

获取OutOfMemoryError的Java程序的行为是什么。 有没有明确的行为? 流程会崩溃还是会进入等待/睡眠状态? 更新:如果我没有在我的代码中处理它?

在jar启动时预加载java类/库?

我用Java编写了一个Thrift服务器来利用特定的Java包/库,但我不是一个java程序员。 问题是; 我看到第一次RPC调用服务器的超时。 子请求请求在没有任何问题的情况下执行,并且它仅影响以某些(但必不可少的)语言编写的客户端。 我当前的想法是服务器在响应时超时,因为在第一次调用时它必须加载请求所需的所有库。 一些Thrift客户端实现必须比其他实现更好地处理超时,可能会使请求保持更长时间。 在我第一次启动.jar文件时,是否有一种方法可以预加载我正在使用的库,这样第一个请求就没有延迟? 解决方案:我通过增加thrift客户端的超时来解决问题(以及其他一些问题)。 但是,我已经实现了static / Class.forName的答案,以帮助解决问题。 谢谢!

Java字节代码中的平台独立性

我有时想知道为什么Java被称为平台独立语言? 我无法找到以下几点的正确解释: JVM是否与Windows / Linux / Mac OS相同? 在上述环境中,对于同一个类,字节码是否相同? 如果上述问题的答案为否,那么如何实现平台独立性。 请帮助我学习这个基本概念。

JIT自动内联的方法大小是多少?

我听说JIT自动内联小方法,比如getter(它们大约有5个字节)。 边界是什么? 有没有JVM标志?