草庐IT

JVM_AllocateNewObject

全部标签

java - Linux JVM 是否真的实现了线程优先级?

编写了一个快速的Java程序,以每个优先级生成10个线程,并使用BigDecimals计算pi(4*atan(1)方法),每次500,000次,加入每个线程并报告运行方法的耗时。是的,可能不是最好的例子,但保持基本。我知道Bug4813310在C中做这件事并非易事,但我们可以假设在LinuxJVM上从未设置native优先级吗?$uname-r&&grepbogomips/proc/cpuinfo2.4.33.3bogomips:4312.26$java-version2>&1|head-1Javaversion"1.6.0_01"$javacT.java&&java-Xmx32m-X

java - Linux JVM 是否真的实现了线程优先级?

编写了一个快速的Java程序,以每个优先级生成10个线程,并使用BigDecimals计算pi(4*atan(1)方法),每次500,000次,加入每个线程并报告运行方法的耗时。是的,可能不是最好的例子,但保持基本。我知道Bug4813310在C中做这件事并非易事,但我们可以假设在LinuxJVM上从未设置native优先级吗?$uname-r&&grepbogomips/proc/cpuinfo2.4.33.3bogomips:4312.26$java-version2>&1|head-1Javaversion"1.6.0_01"$javacT.java&&java-Xmx32m-X

java - JVM 最大堆大小可以是动态的吗?

JVM-Xmx参数允许将JVM的最大堆大小设置为某个值。但是,有没有办法让这个值(value)变得动态?换句话说,我想告诉JVM“看,如果你需要它,就继续从系统中取出RAM,直到系统退出。”询问的两部分原因:首先,有问题的应用程序可以使用非常广泛的内存,具体取决于用户正在做什么,因此概念上的最小值和最大值相差甚远。其次,JVM似乎在启动时从虚拟内存中保留了最大堆空间。这个特定的应用程序在各种各样的硬件上运行,因此选择“一刀切”的最大堆空间很难,因为它必须足够低才能在低端硬件上运行,但我们真的会希望能够利用真正强大的机器(如果有的话)。 最佳答案

java - JVM 最大堆大小可以是动态的吗?

JVM-Xmx参数允许将JVM的最大堆大小设置为某个值。但是,有没有办法让这个值(value)变得动态?换句话说,我想告诉JVM“看,如果你需要它,就继续从系统中取出RAM,直到系统退出。”询问的两部分原因:首先,有问题的应用程序可以使用非常广泛的内存,具体取决于用户正在做什么,因此概念上的最小值和最大值相差甚远。其次,JVM似乎在启动时从虚拟内存中保留了最大堆空间。这个特定的应用程序在各种各样的硬件上运行,因此选择“一刀切”的最大堆空间很难,因为它必须足够低才能在低端硬件上运行,但我们真的会希望能够利用真正强大的机器(如果有的话)。 最佳答案

java - JVM 如何在内部处理竞争条件?

如果多个线程尝试更新同一个成员变量,则称为竞争条件。但是我更感兴趣的是如果我们不在代码中通过使其同步或其他方式来处理它,那么JVM是如何在内部处理它的?它会挂起我的程序吗?JVM将如何应对它?我认为JVM会为这种情况临时创建一个同步块(synchronizedblock),但我不确定到底会发生什么。如果你们中的任何人有一些见解,很高兴知道。 最佳答案 准确的术语是数据竞争,它是竞争条件的一般概念的特化。数据竞赛这个术语是一个官方的、精确指定的概念,这意味着它来自对代码的正式分析。了解真实情况的唯一方法是去研究Java语言规范的内存模

java - JVM 如何在内部处理竞争条件?

如果多个线程尝试更新同一个成员变量,则称为竞争条件。但是我更感兴趣的是如果我们不在代码中通过使其同步或其他方式来处理它,那么JVM是如何在内部处理它的?它会挂起我的程序吗?JVM将如何应对它?我认为JVM会为这种情况临时创建一个同步块(synchronizedblock),但我不确定到底会发生什么。如果你们中的任何人有一些见解,很高兴知道。 最佳答案 准确的术语是数据竞争,它是竞争条件的一般概念的特化。数据竞赛这个术语是一个官方的、精确指定的概念,这意味着它来自对代码的正式分析。了解真实情况的唯一方法是去研究Java语言规范的内存模

java - 以独立于平台的方式将环境变量传递给 JVM

我正在开发一个在WindowsVista机器上的JBoss中运行的J2EE应用程序,但该应用程序最终会在Linux机器上运行。有没有办法以独立于平台的方式传入环境变量的值?我认为(但我不确定)平台敏感的方式是:-Denv_var=%MY_ENV_VAR%(Windows)-Denv_var=$MY_ENV_VAR(Linux)然后我将使用访问该值(在Java中)System.getProperty("MY_ENV_VAR");——对吗?System.getenv(Stringname)的Javadoc似乎暗示该方法依赖于平台,但我并不清楚。我可以完全跳过将变量传递到JVM,并在使用操作

java - 以独立于平台的方式将环境变量传递给 JVM

我正在开发一个在WindowsVista机器上的JBoss中运行的J2EE应用程序,但该应用程序最终会在Linux机器上运行。有没有办法以独立于平台的方式传入环境变量的值?我认为(但我不确定)平台敏感的方式是:-Denv_var=%MY_ENV_VAR%(Windows)-Denv_var=$MY_ENV_VAR(Linux)然后我将使用访问该值(在Java中)System.getProperty("MY_ENV_VAR");——对吗?System.getenv(Stringname)的Javadoc似乎暗示该方法依赖于平台,但我并不清楚。我可以完全跳过将变量传递到JVM,并在使用操作

jvm - 减小 JRE 的大小

我们将Java6JRE与我们的应用程序安装程序捆绑在一起,以便它可以在任何机器上运行,但这会使应用程序更重一些。所以我们计划减小JRE的大小。如果有人做过此类任务,您能否提供指导以推进此任务? 最佳答案 查看JRE目录中的README文件。如果您将Oracle/SunJRE与应用程序打包在一起,则“可选文件和目录”部分列出了可以从Oracle/SunJRE中删除的一些文件。创建安装时,我使用Ant构建文件将JRE从系统安装位置复制到包目录。将要排除的文件列表放在单独的文件中,并使用“excludesfile”属性加载此列表:示例jr

jvm - 减小 JRE 的大小

我们将Java6JRE与我们的应用程序安装程序捆绑在一起,以便它可以在任何机器上运行,但这会使应用程序更重一些。所以我们计划减小JRE的大小。如果有人做过此类任务,您能否提供指导以推进此任务? 最佳答案 查看JRE目录中的README文件。如果您将Oracle/SunJRE与应用程序打包在一起,则“可选文件和目录”部分列出了可以从Oracle/SunJRE中删除的一些文件。创建安装时,我使用Ant构建文件将JRE从系统安装位置复制到包目录。将要排除的文件列表放在单独的文件中,并使用“excludesfile”属性加载此列表:示例jr