草庐IT

jvm-bytecode

全部标签

java - 如何确保 JVM 中只有一个类实例?

我正在开发一种设计模式,我想确保这里只是Java虚拟机中一个类的一个实例,通过一个点汇集对某个资源的所有请求,但我不知道它是否是可能的。我只能想到一种方法来计算类的实例并在创建第一个实例后销毁所有实例。这是正确的方法吗?如果没有,还有其他方法吗? 最佳答案 使用singleton模式。最简单的实现包括一个privateconstructor和一个field来保存其结果,以及一个static访问器方法,其名称类似于getInstance()。可以从静态初始化block中分配私有(private)字段,或者更简单地说,使用初始化器。ge

java - 如何确保 JVM 中只有一个类实例?

我正在开发一种设计模式,我想确保这里只是Java虚拟机中一个类的一个实例,通过一个点汇集对某个资源的所有请求,但我不知道它是否是可能的。我只能想到一种方法来计算类的实例并在创建第一个实例后销毁所有实例。这是正确的方法吗?如果没有,还有其他方法吗? 最佳答案 使用singleton模式。最简单的实现包括一个privateconstructor和一个field来保存其结果,以及一个static访问器方法,其名称类似于getInstance()。可以从静态初始化block中分配私有(private)字段,或者更简单地说,使用初始化器。ge

jvm-日志分析工具gcviewer的使用

gcviewer是什么?   GCViewer是一个小工具,可以可视化Sun/Oracle、IBM、HP和BEAJava虚拟机生成的详细GC输出。它是在GNULGPL下发布的自由软件。---官网翻译gcviewer的使用文章使用的配置工具环境或版本idea2021系统ios(mac)jdk1.8官网:https://github.com/chewiebug/GCViewer下载:https://github.com/chewiebug/GCViewer.git注意:最新的1.3x最低版本仅支持jdk1.8打成jar包或者用idea直接packagemvncleaninstall或者如下操作我这

java - JVM OutOfMemory 错误 "death spiral"(不是内存泄漏)

我们最近将许多应用程序从在RedHatlinuxJDK1.6.0_03下运行的迁移到Solaris10u8JDK1.6.0_16(更高规范的机器),我们注意到一个似乎相当紧迫的问题:在某些负载下我们的JVM让自己陷入“死亡螺旋”并最终耗尽内存。注意事项:这不是内存泄漏的情况。这些应用程序运行良好(在一种情况下运行了3年以上),内存不足错误在任何情况下都不确定。应用程序有时工作,有时不工作这不是我们迁移到64位VM-我们仍在运行32位在一种情况下,在1.6.0_18上使用最新的G1垃圾收集器似乎已经解决了这个问题。另一方面,回到1.6.0_03已经奏效有时我们的应用会因HotSpotSI

java - JVM OutOfMemory 错误 "death spiral"(不是内存泄漏)

我们最近将许多应用程序从在RedHatlinuxJDK1.6.0_03下运行的迁移到Solaris10u8JDK1.6.0_16(更高规范的机器),我们注意到一个似乎相当紧迫的问题:在某些负载下我们的JVM让自己陷入“死亡螺旋”并最终耗尽内存。注意事项:这不是内存泄漏的情况。这些应用程序运行良好(在一种情况下运行了3年以上),内存不足错误在任何情况下都不确定。应用程序有时工作,有时不工作这不是我们迁移到64位VM-我们仍在运行32位在一种情况下,在1.6.0_18上使用最新的G1垃圾收集器似乎已经解决了这个问题。另一方面,回到1.6.0_03已经奏效有时我们的应用会因HotSpotSI

java - 为什么 JVM 允许为 IntegerCache 设置 "high"值,但不允许设置 "low"?

我们都知道,Java对[-128,127]范围内的数字(被认为是“常用”。缓存设计如下:privatestaticclassIntegerCache{staticfinalintlow=-128;staticfinalinthigh;staticfinalIntegercache[];static{//highvaluemaybeconfiguredbypropertyinth=127;StringintegerCacheHighPropValue=sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");i

java - 为什么 JVM 允许为 IntegerCache 设置 "high"值,但不允许设置 "low"?

我们都知道,Java对[-128,127]范围内的数字(被认为是“常用”。缓存设计如下:privatestaticclassIntegerCache{staticfinalintlow=-128;staticfinalinthigh;staticfinalIntegercache[];static{//highvaluemaybeconfiguredbypropertyinth=127;StringintegerCacheHighPropValue=sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");i

Java - 如何仅使用 JVM Config 为某些协议(protocol)禁用 TLS 密码?

我已经看到很多在java中使用jdk.tls.disabledAlgorithms禁用TLS密码的示例,例如:jdk.tls.disabledAlgorithms=MD2,RSAkeySize但我如何才能使用jdk.tls.disabledAlgorithms或类似的配置仅对某些协议(protocol)禁用密码?例如,如何仅对TLSv1.1禁用TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256?好像不支持opensssl这样的方式,是这样的:TLSv1.1:!TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256它不会导致任何错误,但密码仍然

Java - 如何仅使用 JVM Config 为某些协议(protocol)禁用 TLS 密码?

我已经看到很多在java中使用jdk.tls.disabledAlgorithms禁用TLS密码的示例,例如:jdk.tls.disabledAlgorithms=MD2,RSAkeySize但我如何才能使用jdk.tls.disabledAlgorithms或类似的配置仅对某些协议(protocol)禁用密码?例如,如何仅对TLSv1.1禁用TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256?好像不支持opensssl这样的方式,是这样的:TLSv1.1:!TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256它不会导致任何错误,但密码仍然

java - JVM-XX :+StringCache argument?

我最近阅读了有关JRE6[JavaVMOptions中可用的所有JVM参数的信息。]并看到了这个:-XX:+StringCache:Enablescachingofcommonlyallocatedstrings.现在我的印象是Java保留了一个实习(正确的词?)字符串池,并且在使用文字进行字符串连接之类的操作时,它不是创建新对象,而是将它们从该池中拉出。有没有人使用过这个论点,或者可以解释为什么需要它?编辑:我尝试运行基准测试,看看这个参数是否有任何影响,并且无法让SunJVM识别它。这是与:javaversion"1.6.0_11"Java(TM)SERuntimeEnvironm