jvm相关内容

新TLAB中的分配与TLAB之外的分配

JDK中的Java Mission Control工具提供有关新TLAB中的对象分配和TLAB外部分配的统计信息。 (它在内存/分配下)。这些统计数据的意义是什么,对于应用程序的性能有什么好处?我应该担心一些对象是否被分配到TLAB之外,如果是的话,我该怎么处理它? 解析方案 一个线程本地分配缓冲区。在HotSpot中分配正常方式的对象在TLAB中。因为分配缓冲区是线程本地的,所以只有在获取新的T ..
发布时间:2018-04-19 17:55:11 Java开发

NewRatio参数不适用于CMS垃圾收集器

我转换到CMS收集器为我的应用程序和应用程序的吞吐量减少了一半。从GC日志中,我发现小GC发生的频率很高(小于code> 10每秒)。我已经分配了一个堆大小 4G 。 JVM默认使用非常小的尺寸(小于 40MB )。我想通过增加年轻gen的大小来尝试CMS。你能指出我对这个JVM参数吗? 我尝试了-XX:NewRatio,但JVM忽略了这个参数,并且年轻的gen size没有变化 我的Ja ..
发布时间:2018-04-19 17:54:17 Java开发

通过核心API调用System.gc()

你们中的一些人可能知道一些核心java API对System.gc()进行了明确的调用。我知道发生这种情况的两种情况: NIO。当系统用完“直接”内存时,我相信这样做是为了对直接ByteBuffers进行一些清理。 RMI。在这里,原因对我来说不是那么清楚...... 所以,问题是: 是否知道RMI需要System.gc()的原因? 当核心API(或甚至一些其他流行的库)可以 ..
发布时间:2018-04-19 17:52:51 Java开发

为什么Java堆的最大大小是固定的?

它是 ”不“ 可能,以便在VM启动后增加Java堆的最大大小。这是什么技术原因?垃圾收集算法是否依赖于具有固定数量的内存来处理?或者是出于安全原因,通过消耗所有可用内存来阻止Java应用程序DOS系统上其他应用程序的DOS应用程序? 解决方案 即使没有立即使用它,整个堆的地址空间也会在启动时保留。如果它不能为您传递的-Xmx的值保留足够大的连续地址空间块,则它将无法启动。这就是为什么在32 ..
发布时间:2018-04-19 17:50:47 Java开发

如果JVM在执行GC时保持移动对象,它如何解析引用?

我正在阅读JVM调优,而我发现JVM在执行GC时会移动对象。但是Java对象之间有相互引用,哪一个可以假定为指针,但是JVM在每次移动对象后都不可能遍历整个堆,并且更新所有引用;当然,这将永远需要。那么如何解决引用问题,如果引用没有改变,但是这些对象的物理位置呢? 我已经读了很多关于JVM的内容,但是在任何地方都没有解释,甚至暗示。 [编辑]我的观点是引用是单向的。从指针指向指针是“瞬 ..
发布时间:2018-04-19 17:50:26 Java开发

调优JVM(GC)以获得高响应的服务器应用程序

我正在Linux 64位上运行带有8个核心CPU和6 GB内存的应用程序服务器。 服务器必须高度响应。 经过一番检查后,我发现运行在服务器上的应用程序创建了相当数量的短暂对象,并且只有大约200〜400 MB的长寿命对象(只要没有内存泄漏) 阅读 http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html ..
发布时间:2018-04-19 17:49:57 Java开发

为什么JVM需要预热?

据我所知,在Java虚拟机(JVM)中,当Java使用延迟加载过程加载类时,可能需要预热,因此您需要确保在启动主要事务之前初始化对象。我是一名C ++开发人员,无需处理类似的需求。 然而,我无法理解的部分如下: 您应该预热哪部分代码? 即使我预热了代码的某些部分,它仍然保持多久(假设这个术语仅表示类对象保留在内存中的时间)? 如果我每次收到事件时都需要创建对象,它有什么用处? ..
发布时间:2018-04-19 17:49:52 Java开发

了解Java内存管理

Java程序员知道JVM运行垃圾收集器,而System.gc()只是JVM运行垃圾收集器的建议。如果我们使用System.gc(),它不一定会立即运行GC。 如果我误解了Java的垃圾收集器,请纠正我。 除了依赖Java垃圾收集器之外,是否还有其他方式进行内存管理? 如果您打算通过一些有助于管理内存的编程实践来回答问题,请所以。 解决方案 关于Java内存管理最重要的事情是“取 ..

减少JVM暂停时间> 1秒使用UseConcMarkSweepGC

我在一台装有16Gb内存的计算机上运行一个内存密集型应用程序,还有一个8核处理器,以及所有在CentOS 5.2版本上运行的Java 1.6(Final)。精确的JVM详细信息如下: Java版本“1.6.0_10” Java™SE运行时环境(版本1.6 Java HotSpot™64位服务器虚拟机(构建11.0-b15,混合模式) 我使用以下命令行选项启动应用程序: ..
发布时间:2018-04-19 17:47:48 Java开发

测量在JVM上花费在GC上的时间

假设我正在测试一个Java服务器应用程序。我知道完成测试需要多少时间。现在我想知道在测试期间在GC上花了多少钱。我该怎么做?最简单的方法是使用 -Xloggc 和 在启动JVM时,c $ c> -XX:-PrintGCTimeStamps 选项。我认为它会显示垃圾收集需要多长时间。 http://www.oracle.com/technetwork/java/javase/tech/vmop ..
发布时间:2018-04-19 17:47:22 Java开发

年轻,终身和烫发一代

我对堆,年轻,终身和烫发一代感到困惑。 任何人都可以解释吗? 解决方案 简称为世代垃圾收集器。应用程序中的对象根据创建的位置以及使用方式而存在不同的时间长度。这里的关键洞察是,针对短期和长期使用的对象使用不同的垃圾收集策略可以使GC针对每种情况进行专门优化。 $ b 松散地说,作为对象“生存“的年轻一代重复的垃圾收集,他们被迁移到 。 永久代 是一个特殊情况,它包含JVM需要的对象, ..
发布时间:2018-04-19 17:45:55 Java开发

爪哇GC:为什么两个幸存者地区?

对于Sun / Oracle的JVM,我已经读过GC算法将新一代划分为一个Eden地区和两个幸存者地区。我想知道的是,为什么两个幸存者地区,而不是一个?算法可以在伊甸园和只有一个幸存者地区之间保持乒乓球(目前在两个幸存者地区之间的方式);或者是否存在这种方法的缺点? 解决方案 我相信JRockit的GC实现更像你的建议,只有一个单一的伊甸园和单个幸存者空间,但不要引用我。 HotSp ..
发布时间:2018-04-19 17:43:58 Java开发

分析gc日志

使用XX:+ PrintGCApplicationStoppedTime -XX:+ PrintGCApplicationConcurrentTime添加到我的gc日志中! 但是发现只有在打印完4G或5G PrintGCApplicationStoppedTime后,通过-XX打印:+ PrintGCDetails命令! 根据定义PrintGCApplicationStoppedTim ..
发布时间:2018-04-19 17:42:20 其他开发

垃圾收集器是否保证在内存不足错误之前运行?

如果堆满了,JVM会抛出一个 的OutOfMemoryError 。但是可以确定的是,一个(完整的)垃圾回收总是在引发这样的异常之前发生? 这意味着当引发异常时,内存只有强引用对象(或GC Roots可访问)才是完整的。 编辑:假设Sun JVM - HotSpot正在讨论中。 解决方案 The ..
发布时间:2018-04-19 17:42:18 Java开发