草庐IT

jvm-bytecode

全部标签

java - 需要有关 Apple OS X 的替代 JVM 的指导

ApplehasdeprecatedtheirJVMfuture版本的OSX可能不支持它。我主要不是Java开发人员,但我偶尔会编写Java应用程序,我使用的主要应用程序使用Tomcat和Opal为命令行提供SOAP接口(interface)用C编写的可执行文件。我一直看到关于简单地使用另一个JVM的建议,但这似乎显得滑稽可笑。在这一点上,我认为在OSX上运行的OracleJVM纯粹是一种假设。这似乎是一个合理的解决方案,但鉴于苹果、甲骨文和谷歌似乎处于三方较量中,我担心它可能会延迟相当长的一段时间。我一直指向OpenJDK,但这似乎需要从源代码构建JVM。这对我个人来说很好,但对我的

JVM:常用的四种垃圾回收机制

1.CMS(ConcurrentMarkSweep):并行标记清除老年代垃圾回收机制cms是一个基于标记-清除算法的综合多种算法的老年代垃圾回收器适用场景:重视服务器响应速度,要求系统停顿时间最短。这里要说明下,这是一个老年代算法,年轻代怎么处理?不回收了嘛?这里其实年轻代是采用的其它算法,具体看策略,Java参数可以选择策略。这里下文也会涉及到主要的pipeline如下1、初始标记(CMSinitialmark)“StopTheWorld”,仅仅只是标记一下GCRoots能直接关联到的对象,也就是根集合可直接到达的对象,但不会直接到叶子节点,还有遍历新生代对象,标记可达的老年代对象;速度很快

java - 一个有用的指标,用于确定 JVM 何时将陷入内存/GC 故障

我有一个scala数据处理应用程序,95%的时间都可以处理内存中抛给它的数据。剩余的5%如果不加以检查,通常不会遇到OutOfMemoryError,但只会进入主要GC循环,使CPU激增,阻止后台线程执行,即使它完成了,也需要10倍-50倍只要它有足够的内存。我已经实现了可以将数据刷新到磁盘并将磁盘流视为内存中迭代器的系统。它通常比内存慢一个数量级,但足以满足这5%的情况。我目前正在触发一个最大集合上下文的启发式方法,该集合上下文跟踪数据处理中涉及的各种集合的大小。这可行,但实际上只是一个临时的经验阈值。我宁愿对JVM接近上述不良状态使用react并在那时刷新到磁盘。我试过观察内存,但

java - -XX :+UseNUMA affects JVM performance for systems with only one node?如何

有很多文章介绍了JVMNUMA感知分配器的好处。但是我找不到有关可能导致什么性能影响的信息-XX:+UseNUMA单节点拓扑的标志,如#numactl--hardwareavailable:1nodes(0)node0cpus:0123node0size:32060MBnode0free:7770MBnodedistances:node00:10这似乎是一种极端情况,启用标志并没有真正的利润。如果是这样,启用它是否会导致任何缺点? 最佳答案 -XX:+UseNUMA在这些情况下没有坏处。HotSpotJVM在单个节点上运行时自动关闭

java - JVM如何使用超过4GB的内存

我有一个安装Linux服务器(最好是Ubuntu64位服务器)的请求,和Java(64位)在以下机器上:IntelCore2QuadQ8200-2.33GHz8GBDDR2内存软RAID1镜像(镜像)中的2个320GBSATAHDD问题是如何配置系统和Java,因为我需要JVM使用超过4gb的内存。它不能分布在很多虚拟机上。有超过4GB大的数据它必须在内存中,因为HDD速度慢且性能至关重要。这是一个配置和性能问题,如果有人有经验,我对评论感兴趣?非常感谢你在这件事上帮助我...... 最佳答案 一个64位的JVM应该完全没有巨型堆的

Java JVM中的GC机制详解

1.GC概述垃圾回收(GarbageCollection,简称GC)机制是JVM中最重要的部分之一。在Java程序运行的过程中,运行时数据区域(包括堆和栈等内存区域)一直都需要使用和回收内存空间。由于Java中的内存分配方式是动态的,所以在程序运行期间,其内存空间的占用量会不断变化。如果Java程序没有进行垃圾回收,那么程序运行过程中使用的内存空间将不断累加,最后内存会被完全占用,导致程序崩溃。因此,为了保证程序正常运行,避免内存被耗尽和泄漏问题,JVM中设计了垃圾回收机制,用来定期清理无用的对象,并回收内存空间。在JVM中,GC操作是一个自动化过程,由JVM自动执行。JVM把一些没有被引用的

java - 为什么 JVM 不简单地终止而不是抛出 OOME?

如果捕获OutOfMemoryError是非常不鼓励的,因为捕获错误后您可能不知道JVM的状况,为什么JVM不简单地终止并以某种方式通知用户而不是抛出错误? 最佳答案 因为没有单一的标准方法可以向用户报告错误情况。抛出错误允许在顶层捕获对象,并在终止之前报告条件,但它可能是适当的(控制台消息、写入日志文件、显示对话框等)。文档指出,合理的应用程序不应捕获错误,这是事实:处理它们的最佳方式是在框架代码中,因为它们的处理方式几乎没有(尽管不是零)变化。具体来说,它们实际上无法从中恢复,这就是为什么大多数应用程序作者都试图捕获它们。更新:

Java/JVM(热点): Is there a way to save JIT performance gains at compile time?

当我测量我的Java应用程序的吞吐量时,我发现随着时间的推移性能提高了50%:对于前10万条消息,我每秒收到约3,000条消息对于第二个10万条消息,我每秒收到约4,500条消息。我相信性能会随着JIT优化执行路径而提高。不保存JIT编译的原因是“JVM执行的优化不是静态的,而是动态的,基于数据模式和代码模式。很可能这些数据模式将在应用程序的生命周期内发生变化,从而导致缓存优化达不到最佳效果。”但是,我知道这些数据模式在我的应用程序生命周期内不会改变,甚至在多个应用程序生命周期内也不会改变。那么我怎样才能在HotSpotJVM中“保存”这些性能提升呢?另请参阅相关的question和d

java - 抽象类和接口(interface)在 JVM 中的存储方面有什么区别

这个问题在这里已经有了答案:Javainterfaces...Dynamicorstaticmemory?(3个答案)关闭7年前。抽象类和接口(interface)在JVM中的存储方面有什么区别。更准确地说,JVM将接口(interface)存储在其内存中的什么位置?

java - 适当的 Tomcat 5.5 启动参数来调整 JVM 以满足极高的需求、大堆 Web 应用程序?

我们最近将一个大型、高要求的Web应用程序从Tomcat4迁移到Tomcat5.5,并注意到一些似乎与JVM暂停有关的特殊减速行为。为了在Tomcat4上运行我们的应用程序并支持随着时间的推移增加的负载,许多不太标准的JVM参数被设置和调整如下,我希望有TomcatJVM调整经验的人可以评论任何可能有害的东西到Tomcat5.5安装。另请注意,其中一些可以从以前的Java版本中继承(我们使用这些参数在Java1.6上成功运行Tomcat4一段时间,但可能已经引入了一些以帮助Java1.4上的垃圾收集,这是Java的基础我们的Tomcat4安装了很长时间,现在可能弊大于利)。一些注意事项