jvm相关内容
执行程序时出现以下错误。 这并非总是如此。 该代码包含一些复杂的计算,其中包含大量数据。 有人可以帮助识别错误 # #Java Runtime Environment检测到一个致命错误: # #SIGSEGV(0xb)pc = 0x00002b2f7e9b2744, pid = 28778,tid = 1138739520 # #JRE版本:7.0-b147 #Java虚拟
..
我在一次采访中听到了这个问题,无法提供答案。后来我通过互联网搜索,仍然没有找到答案。任何人都可以告诉我,JVM如何在停止收集垃圾的时候停止线程,以及如何再次运行它们。 解决方案 至少对于HotSpot和OpenJDK,JVM使用安全点来停止每个线程中的应用程序流,这些流可以通过JITed代码引入,也可以通过更改解释代码的字节码映射来实现(参见本文由Alexey Ragozin了解更多详情)。
..
我们最近有一种情况,我们的一个生产JVM会随机冻结。 Java进程正在燃烧CPU,但所有可见的活动都将停止:没有日志输出,没有写入GC日志,没有响应任何网络请求等等。该进程将一直持续到此状态,直到重新启动。 事实证明,org.mozilla.javascript.DToA类在某些输入上被调用时会感到困惑,并以巨大的值调用BigInteger.pow(例如5 ^ 2147483647),这会触
..
最近生产环境变得非常缓慢。该进程的CPU占用了200%。然而,它继续工作。重新启动服务后,它再次正常工作。我有几个症状: 帕尔幸存者空间堆很长一段时间是空的,垃圾收集大约占CPU时间的20%。 JVM选项: X:+ CMSParallelRemarkEnabled,-XX: + HeapDumpOnOutOfMemoryError,-XX:+ UseConcMarkSweepGC,
..
我发现在几个地方[1],人们开始在生产服务器(关键任务)中进行GC日志记录,例如, java -server -Xms1024m -Xmx1024m -XX:NewSize = 256m \ -XX:MaxNewSize = 256m \\ \\ -XX:+ UseConcMarkSweepGC \ -XX:CMSInitiatingOccupancyFraction = 70
..
我正在阅读 Java平台性能 (遗憾的是,自从我提出这个问题以来,这个链接似乎从互联网上消失了),A.3.3节让我担心。 我一直在做这样的假设,即一个掉出范围的变量将不再被视为GC根源,但这篇论文似乎与此矛盾。 最近的JVM,特别是Sun的1.6.0_07版本,仍然有这个限制?如果是这样,那么我有很多代码可以分析...... 我问这个问题是因为这篇论文是从1999年开始的 - 有
..
我们运行了很多Tomcat服务器,并且观察到完整垃圾回收(GC)通常每小时执行一次,特别是当内存使用率相对较低时。准确的时间似乎与应用程序服务器启动的时间有关;如果服务器在01:13启动,完整的GC在02:13完成,下一个完整的GC将在03:13完成。我无法找到任何文档来解释这种行为。 这是一个问题,因为同时启动的服务器池都倾向于在完全相同的情况下执行完整的GC时间。如果GC延迟时间足以导致
..
我们已经开始在Java EE应用程序中遇到一些严重的问题。具体来说,应用程序在启动后几分钟内运行高达99%的老一代堆。没有OOM被抛出,但实际上JVM没有响应。 jstat显示老一代的大小没有减少,没有垃圾回收,kill -3表示: 堆 PSYoungGen总计682688K,使用506415K [0xc1840000,0xf3840000,0xf3840000) eden space
..
众所周知,GC有时会在内存中移动对象。而且据我的理解,只要所有引用在对象移动时(在调用任何用户代码之前)都更新,这应该是完全安全的。 然而,我看到有人提到参考比较可能是不安全的,因为GC在参考比较的中间移动了对象,即使两个参考都应该引用相同的对象,比较也可能失败? 即,有没有什么情况下下面的代码不会显示“true”? Foo foo = new Foo(); Foo bar
..
任何人都可以建议一本书(或任何其他来源)来彻底揭示JVM内存管理的内部结构。垃圾收集(优化,工作,循环引用,大脑,讨论各种JVM impls ...)? [到目前为止我发现的是单独的文章致力于各方面,但没有重量tome :)。一些用于实现Hotspot的好材料是此处。 ] 非常感谢您给出的任何建议。 如果您寻找独立于供应商的资源来揭示和彻底描述所有研究/设计的各种GC
..
我试图避免在生产环境中运行Tomcat中的Grails应用程序的Full GC(从下面的gc.log示例) 。 有关如何更好地配置GC的任何建议? 14359.317:[Full GC 14359.317:[CMS:3453285K-> 3099828K(4194304K), [13.1778420秒] 4506618K-> 3099828K(6081792K),[CMS Perm:26
..
如果我错了,请随时纠正我。在JVM堆中,有两代人,老少皆宜。在进行完整的GC时,在老一代中,像紧凑空间和固定孔这样的繁重操作会导致JVM挂起。我发现在年轻一代中,应用了轻量级GC,另外还有一个领域叫做伊甸参与了我的搜索结果。然而,在搜索了很多文件后,我仍然对年轻一代GC有两个混淆,在年轻一代中,GC似乎确实如此不适合老一代GC工作的方式(即旧一代GC紧凑和固定孔)?如果是这样,年轻一代的GC如何运
..
我被问到了这个问题,并且我刚刚回答“因为JVM需要移动对象”,但后来我使用了Google,并且似乎找不到任何合理的答案。 解决方案 首先,在wikipedia上垃圾回收文章是真的很好的阅读。 说到。 一般来说GC不需要Stop世界暂停。 有几乎是免费的JVM实现(例如 Azul Zing JVM )。 JVM要求STW收集垃圾取决于它使用的算法。 $ b Mark Swee
..
我得到一个对象在没有更多实时引用的情况下有资格进行垃圾回收,但是如果它包含活动对象的引用呢? 可以说我有一个节点集合,可以再次引用更多节点 列表 1 - >节点a - >节点b 2 - >节点c - >节点d 3 - >节点d - >节点c 4 - >节点e 5 现在,如果我删除列表,节点cd和e应该是垃圾集。节点e没有更多的引用,并且
..
在Java堆上,预计 年轻代的大小将是 eden空间的大小之和和生存空间 (空间和空间): [young gen size] = [eden space size] + [from space size] + [to space size] 然而,GC日志(使用 XX:+ PrintHeapAtGC )声明年轻一代是 eden space 和其中一个生存空间 的大小之和:
..
我一直在编写一个Java客户端,它使用 JDI 来创建和修改远程JVM中的对象(通过连接到 JDWP 代理服务器)。我的项目的一个要求是,我无法挂起远程JVM中的所有线程,这意味着我创建的对象可能容易被垃圾收集,然后才能使它们在JVM中可访问。 在某些情况下,我在远程JVM中创建对象,但它们随机被垃圾收集。例如,如果我通过 调用 ObjectReference.setValue(Field,
..
我的单机可用资源为: 机器总内存:2.00 TB 空闲机器内存:1.81 TB 最大堆内存:910.50 MB 处理器:192 配置的最大内存:1.63 TB 我的file1.csv文件大小为600GB 我的csv文件中的条目数量= 3 000 000 000 头结构 attempt1 item_col1:ID(标签),item_c
..
我有一个像java框架的微服务。许多java进程在一个盒子上运行(ubuntu 14.04.4 LTS)。 java进程使用很多系统内存,因此交换空间被大量使用。 jstat gc报告不解释系统内存使用情况。所有java进程都使用参数运行 $ b $ pre $ -XX:MinHeapFreeRatio = 20 -XX:MaxHeapFreeRatio = 40 -XX:GCTimeRatio
..
就我的理解最终确定()和GC是两个不同的方面。 GC使用finalize()方法释放对象内存。我们不能说明GC何时会发生(即使我们明确地调用了System.gc())。但是我们可以在一个Object上明确地调用finalize()。 函数会立即执行(内存释放)还是等待GC 像System.gc()调用一样发生? 同样根据文档,finalize方法永远不会由Java虚拟机多
..
有时候,我的JVM耗尽内存,而不是OOMing,我可以从中恢复(或堆dumpOnOOM和调试),它往往会在内存溢出之前在GC中出现几个小时的颠簸。 这与(未回答)问题基本相同:如何配置Java GC开销限制? 但我怀疑答案是您无法调整98%/ 2%的阈值,所以我想要以任何方式实现类似影响。注意过多的GC,最好是导致OOM,或者杀死JVM等。 解决方案 Oracle的 GC人体工程学指南涵盖了
..