草庐IT

jvm-bytecode

全部标签

java - 鼓励 JVM 进行 GC 而不是增加堆?

(请注意,当我说“JVM”时,我的意思是“热点”,我正在运行最新的Java1.6更新。)示例情况:我的JVM运行时-Xmx设置为1gb。目前,堆分配了500mb,其中450mb被使用。该程序需要在堆上再加载200mb。目前,堆中有300mb的“可收集”垃圾(我们假设它们都在最老的一代中。)在正常操作下,JVM会将堆增加到700mb左右,并在到达时进行垃圾收集。在这种情况下,我希望JVM先gc,然后分配新的东西,这样我们最终的堆大小保持在500mb,使用的堆大小保持在350mb。是否有一个JVM参数组合可以做到这一点? 最佳答案 您可

java - 鼓励 JVM 进行 GC 而不是增加堆?

(请注意,当我说“JVM”时,我的意思是“热点”,我正在运行最新的Java1.6更新。)示例情况:我的JVM运行时-Xmx设置为1gb。目前,堆分配了500mb,其中450mb被使用。该程序需要在堆上再加载200mb。目前,堆中有300mb的“可收集”垃圾(我们假设它们都在最老的一代中。)在正常操作下,JVM会将堆增加到700mb左右,并在到达时进行垃圾收集。在这种情况下,我希望JVM先gc,然后分配新的东西,这样我们最终的堆大小保持在500mb,使用的堆大小保持在350mb。是否有一个JVM参数组合可以做到这一点? 最佳答案 您可

java - JVM 什么时候加载类?

假设我有以下类(class):classCaller{publicvoidcreateSomething(){newSomething();}}将执行此行:staticvoidmain(){Classclazz=Caller.class;}导致JVM加载类Something还是类加载延迟到方法createSomething()被调用? 最佳答案 仅当您需要有关该类的信息时才加载该类。publicclassSomethingCaller{publicstaticSomethingsomething=null;//(1)doesnotc

java - JVM 什么时候加载类?

假设我有以下类(class):classCaller{publicvoidcreateSomething(){newSomething();}}将执行此行:staticvoidmain(){Classclazz=Caller.class;}导致JVM加载类Something还是类加载延迟到方法createSomething()被调用? 最佳答案 仅当您需要有关该类的信息时才加载该类。publicclassSomethingCaller{publicstaticSomethingsomething=null;//(1)doesnotc

java - JVM字节码验证者的职责

有人可以列出字节码validator必须执行以保证程序正确性的主要任务吗?JVM规范中是否定义了一组标准的、最小的职责?我还想知道验证是否跨越其他阶段,例如加载和初始化。 最佳答案 这是在JVMSpecification:Chapter4.10.VerificationofclassFiles中指定的.页面的大部分内容描述了类型安全的各个方面。要检查程序是否是类型安全的,验证程序需要确定每个程序点的操作数堆栈中的操作数类型,并确保它们与相应指令所期望的类型相匹配。它验证的其他内容包括但不限于以下内容:Branchesmustbewi

java - JVM字节码验证者的职责

有人可以列出字节码validator必须执行以保证程序正确性的主要任务吗?JVM规范中是否定义了一组标准的、最小的职责?我还想知道验证是否跨越其他阶段,例如加载和初始化。 最佳答案 这是在JVMSpecification:Chapter4.10.VerificationofclassFiles中指定的.页面的大部分内容描述了类型安全的各个方面。要检查程序是否是类型安全的,验证程序需要确定每个程序点的操作数堆栈中的操作数类型,并确保它们与相应指令所期望的类型相匹配。它验证的其他内容包括但不限于以下内容:Branchesmustbewi

java - 使用 Runtime.exec 从 Java 应用程序启动 JVM 进程?

我希望能够从现有的java应用程序启动Java服务器进程并监视stdoutput和stderror并将该输出重定向到文件。是使用“Runtime.exec”并将应用程序视为任何其他操作系统进程的最佳方法,还是有更适合新JVM的方法。这是在Java1.5上 最佳答案 您应该使用ProcessBuilder而不是Runtime,尽管我不知道在您的情况下是否更合适(特别是运行Java进程)。 关于java-使用Runtime.exec从Java应用程序启动JVM进程?,我们在StackOver

java - 使用 Runtime.exec 从 Java 应用程序启动 JVM 进程?

我希望能够从现有的java应用程序启动Java服务器进程并监视stdoutput和stderror并将该输出重定向到文件。是使用“Runtime.exec”并将应用程序视为任何其他操作系统进程的最佳方法,还是有更适合新JVM的方法。这是在Java1.5上 最佳答案 您应该使用ProcessBuilder而不是Runtime,尽管我不知道在您的情况下是否更合适(特别是运行Java进程)。 关于java-使用Runtime.exec从Java应用程序启动JVM进程?,我们在StackOver

java - 我可以在内存不足异常时自动重启tomcat jvm吗

我知道这不是“最佳实践”,但我想知道如果我部署的应用程序抛出内存不足异常,我是否可以自动重启tomcat 最佳答案 您可以尝试使用OnOutOfMemoryErrorJVM选项-XX:OnOutOfMemoryError="/yourscripts/tomcat-restart"也可以生成堆转储供以后分析:-XX:+HeapDumpOnOutOfMemoryError小心结合这两个选项。如果您在“tomcat-restart”中强制终止进程,堆转储可能不完整。 关于java-我可以在内存

java - 我可以在内存不足异常时自动重启tomcat jvm吗

我知道这不是“最佳实践”,但我想知道如果我部署的应用程序抛出内存不足异常,我是否可以自动重启tomcat 最佳答案 您可以尝试使用OnOutOfMemoryErrorJVM选项-XX:OnOutOfMemoryError="/yourscripts/tomcat-restart"也可以生成堆转储供以后分析:-XX:+HeapDumpOnOutOfMemoryError小心结合这两个选项。如果您在“tomcat-restart”中强制终止进程,堆转储可能不完整。 关于java-我可以在内存