问题内容: 我已经阅读了很多有关在Java中优化GC的文章,并且经常想知道有多少人 真正 使用了一些更高级的功能。 我一直避免在可能的地方进行调整,而专注于编写我能做的最简单的代码(Brian Goetz的建议)-到目前为止,这对我来说似乎一直很好。 这些调整策略是否具有弹性,可以跨VM版本进行更改,或者它们需要不断进行重新评估? 我使用的一种调优是-server标志。 问题答案: 我当前工作的一
问题内容: 这是我几个月来一直试图寻找的问题。我有一个运行的Java应用程序,它处理xml提要并将结果存储在数据库中。存在间歇性的资源问题,很难追踪。 背景: 在生产包装盒上(问题最明显的地方),我对包装盒的访问不是特别好,并且无法使Jprofiler运行。那个盒子是一个运行centos5.2,tomcat6和java 1.6.0.11的64位四核8GB计算机。它以这些java-opts开头 技术
问题内容: 我想知道触发Java完整垃圾收集的确切情况是什么。 显而易见的是: 用完了老一代 用完了perm gen 调用System.gc() 那么其他导致全gc的情况又如何呢?尤其: Survivor Space中的可用空间不足,无法从Eden复制对象。 次要收藏集无法应付新对象的分配率(虽然不知道如何)。 我正在运行Sun Java 1.6,并将Concurrent Mark-Sweep和P
问题内容: 我们打开了详细的GC日志记录来跟踪已知的内存泄漏,并在日志中获得以下条目: 我理解其中的第一个和第三个,但是“ GC–”是什么意思? 问题答案: 我在gc输出中得到了以下几行: 我读了Yishai的回答,这很有意义,但是当JVM在GC日志中打印“-”时,我想在Java GC源代码中亲自查看它,以及为什么。 据我所知,Young Gen的“ Parallel Scavenge”是一个停滞
问题内容: 我有一个按24x6时间表运行的应用程序。当前,运行几天后,会自动执行Full GC(通常在一天中的繁忙时间),这会对用户响应时间产生负面影响。 我想做的是强制使用Full GC(也许是在每晚的午夜,在非常短的使用时间内),以防止它在白天发生。我已经尝试过System.gc(),但是它似乎无法保证何时会发生Full GC,甚至不会发生。有这样做的方法吗? 版本信息: Java™SE运行时
我担心的是,我在理解Java中的连接池时遇到了一个根本问题。 我正在使用IDBCataSource作为连接池。在我的应用程序的入口点,我实例化了一个BasicDataSource,例如setMaxActive=50。然后将该数据源的实例传递到各种DAO中,这些DAO由一些业务逻辑使用。 每个DAO都调用getConnection(),但没有调用单个close()。我的假设是,在不使用DAO之后,垃
问题内容: 我有一个Java应用程序正在泄漏内存。我知道在垃圾回收期间哪些对象没有被释放,但是我无法确定引用它们的对象。 JVM内部保存的对象图是否具有某种可见性? 否则就有可能找出哪些对象引用了另一个对象? 问题答案: 在真正的基础上,您可以使用命令jhat和jmap从正在运行的Java进程中读取堆文件,然后对其进行处理- 它在本地端口上启动小型Web服务器。它并不是很容易阅读,但是您不必购买分
问题内容: 如果堆上有两个互相引用的对象,但它们没有链接到任何引用变量,那么这些对象是否可以进行垃圾回收? 问题答案: 对,他们是。基本上,GC从“已知根”(静态变量,来自alll线程中所有堆栈帧的局部变量)中查找无法进行垃圾回收的对象。如果无法从根目录访问对象,则可以收集该对象。 编辑:汤姆指出了这一点,我认为值得将答案本身引入: 从技术上讲,静态变量不是根-它们是由类加载器所引用的类所引用的,
本文向大家介绍简述分代垃圾回收器是怎么工作的?相关面试题,主要包含被问及简述分代垃圾回收器是怎么工作的?时的应答技巧和注意事项,需要的朋友参考一下 分代回收器有两个分区:老生代和新生代,新生代默认的空间占比总空间的 1/3,老生代的默认占比是 2/3。 新生代使用的是复制算法,新生代里有 3 个分区:Eden、To Survivor、From Survivor,它们的默认占比是 8:1:1, 它的
在main()方法结束之前,有多少对象可以进行垃圾收集? 问题的答案是“stringArray和intArray有资格进行垃圾收集”,但也有“args”数组应该有资格进行垃圾收集。答案应该是“stringArray、intArray和args”,但我不确定。 args param是否符合垃圾收集的条件,并且可以在列表中计数?
当Tester类的主方法结束时,有多少对象符合垃圾收集的条件?我的印象是答案是两个,尤其是a1,b1。然而,我找到了一个正确的答案,那就是只有一个对象是合格的。我认为,由于我们没有将b1指定为a2中的成员变量,b1在主要结束之前被分配为null,所以应该由垃圾收集器收集。什么是真的?
我正在调试内存泄漏,不得不深入CompletableFuture内部。有这样一段代码(completablefuture . unicomposestage): 代码本身对我来说很清楚:应用一个返回完成阶段()的函数,创建一个中继,最终将值转移到另一个可完成的未来(),然后返回另一个未来()。我看到以下参考情况: 同时引用和(并且构造函数中没有魔法,只有字段分配) 引用 没有引用任何内容 只有被返
本文向大家介绍请简单描述一下垃圾回收器的基本原理是什么?还有垃圾回收器可以马上回收内存吗?并且有什么办法可以主动通知虚拟机进行垃圾回收呢?相关面试题,主要包含被问及请简单描述一下垃圾回收器的基本原理是什么?还有垃圾回收器可以马上回收内存吗?并且有什么办法可以主动通知虚拟机进行垃圾回收呢?时的应答技巧和注意事项,需要的朋友参考一下 考察点:垃圾回收 对于GC来说,当程序员创建对象时,GC就开始监控这
问题内容: Go是一种垃圾回收语言: http://golang.org/doc/go_faq.html#garbage_collection 在这里,它说这是一个标志性的垃圾回收器,但是它没有深入研究细节,并且正在进行替代…但是,自Go发行以来,该段似乎没有太多更新。 它仍然是标记和扫描?是保守还是精确?它是世代相传的吗? 问题答案: Go 1.4+垃圾收集器的计划: 混合世界/并发收集器 截止
问题内容: 我已配置Java将垃圾回收信息转储到日志中(详细GC)。我不确定日志中的垃圾回收项是什么意思。这些条目的示例发布在下面。我在Google上四处搜寻,但找不到可靠的解释。 我有一些合理的猜测,但我正在寻找答案,这些答案提供了对条目中数字含义的严格定义,并有可靠的依据。引用sun文档的所有答案的自动+1。我的问题是: PSYoungGen指的是什么?我认为这与上一代(年轻人)有关,但是究竟