我们的服务器应用程序似乎在一段时间内表现正常,但过了一段时间后,生存空间将填满100%,从那时起,堆使用量增加,GC周期(次要和主要)变得越来越频繁,最终堆耗尽。
这是“jstat-gcutil”的一部分
S0 S1 E O P YGC YGCT FGC FGCT GCT
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 6.02 100.00 48.55 59.93 7015 11777.197 345 554.945 12332.143
0.00 100.00 1.30 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 10.74 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 19.16 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 27.72 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 37.43 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 45.76 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 55.35 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 63.05 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 72.27 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 81.21 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 90.46 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 100.00 50.43 59.93 7016 11778.699 345 554.945 12333.644
80.16 100.00 100.00 50.53 59.93 7016 11778.699 345 554.945 12333.644
100.00 0.00 5.96 51.79 59.93 7016 11780.080 345 554.945 12335.026
100.00 0.00 7.73 51.79 59.93 7016 11780.080 345 554.945 12335.026
100.00 0.00 7.73 51.79 59.93 7016 11780.080 345 554.945 12335.026
100.00 0.00 7.73 51.79 59.93 7016 11780.080 345 554.945 12335.026
我的问题是这种应用程序行为背后的主要原因是什么?是太小的年轻空间或堆,其他一些JVM参数,还是只是一个普通的旧内存泄漏?
解决这个问题的最佳策略是什么,GC调优还是应用程序重构?
JDK 1.6、HP-UX、Xmx/Xms 1G、Xmn 264M、UseConcMarkSweepGC、UseParNewGC
非常感谢
普通的旧内存泄漏,我会搜索你使用的任何库是否已经首先泄漏。
是否有正在激活的批处理作业?
尝试查找这个,但是我遇到的所有问题/答案都谈到了拥有2个幸存者空间的目的。我想了解拥有幸存者空间的一般目的。将物体从伊甸园移动到幸存者有什么好处?
你能回答我一个关于JVM垃圾收集过程的问题吗? 为什么堆被分为伊甸园、幸存者空间和老一代? 当一个年轻的疏散被处理时,通过从根开始的引用访问对象,以找出无法到达的对象。可到达的对象标记为“活动”,不可到达的对象不标记,将被删除。 因此,所有对象都会被考虑,包括旧一代中分配的对象也会被访问并标记是否可以访问。 据我所知,同时回收年轻一代和老一代是非常困难的,因为这两代人位于内存中不同的连续部分。 但
SurvivorRatio参数控制两个幸存者空间的大小。例如,-XX:SurvivorRatio=6将每个幸存者空间和eden之间的比率设置为1:6,每个幸存者空间将是年轻一代的八分之一。 为什么幸存者和伊甸园的空间容量与SurvivorRatio不匹配,如下所示?由制作。
为什么代码获取不到API返回的数据? API是免费版本, 每分钟限制45次请求,使用POST请求方式, URL中的fields=58898是返回指定字段. 我在API的网站查询IP没有问题, 但是代码中一直返回空值, requests也没有报错, 所以现在有点不知道从哪里下手了, 请大佬们帮我分析一下, 或者给点思路! 跪谢!
问题内容: 当我尝试运行程序时,出现以下错误 请帮忙 问题答案: 从Javadoc: 如果Java虚拟机找不到声明为native的方法的适当本机语言定义,则抛出该异常。 这是与JNI相关的错误。loadJacobLibrary试图加载名为jacob-1.14.3-x86的本机库,但在java.library.path定义的路径上找不到该库。启动JVM时,应将此路径定义为系统属性。例如 在Windo
在这里抛出RejectedExecutionException是否有其他原因? java.util.concurrent.RejectedExecutionException:任务java.util.concurrent.FutureTask@4194a5f0被java.util.concurrent.ThreadPoolExecutor@41a36e90拒绝[终止,池大小=0,活动线程=0,排队