Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Swing应用程序冻结_Java_C_Swing_Out Of Memory - Fatal编程技术网

Java Swing应用程序冻结

Java Swing应用程序冻结,java,c,swing,out-of-memory,Java,C,Swing,Out Of Memory,我们有一个Java应用程序,它有点大,需要太多内存,虽然我使用Xm标志设置了初始和最大内存,但有时它会冻结,如果幸运的话,我们会在1-2分钟后出现OutOfMemoryError 如果发生这种情况,我们需要重新启动应用程序 我们通过本机c应用程序运行该程序,该应用程序只运行命令行 问题 如果我没有设置Xmx标志呢? 这是否意味着无限的内存使用? 我如何知道应用程序是用C还是Java冻结的? 如果我没有设置Xmx标志呢 然后JVM默认为应用程序的内存大小通常适中 这是否意味着无限的内存使用 没有

我们有一个Java应用程序,它有点大,需要太多内存,虽然我使用Xm标志设置了初始和最大内存,但有时它会冻结,如果幸运的话,我们会在1-2分钟后出现OutOfMemoryError

如果发生这种情况,我们需要重新启动应用程序

我们通过本机c应用程序运行该程序,该应用程序只运行命令行

问题 如果我没有设置Xmx标志呢? 这是否意味着无限的内存使用? 我如何知道应用程序是用C还是Java冻结的? 如果我没有设置Xmx标志呢

然后JVM默认为应用程序的内存大小通常适中

这是否意味着无限的内存使用

没有

我如何知道应用程序是用C还是Java冻结的

修复内存泄漏1

请注意,我回答的问题使用了“release”而不是“realize”。经过仔细考虑,我觉得答案应该保持不变。“释放内存”或“意识到存在问题”都不能真正解决问题。无论哪种方法,解决实际问题(内存泄漏)都更好

作为旁白。我不认为问题出在C代码中,而是通过一个简单的测试来启动应用程序。从命令行中可以看到任何一种方式。我认为问题出在Java代码上的原因是OutOfMemoryError可能是由一个功能齐全的JVM检测到的

如果是C应用程序。已使用JVM为自身或应用程序保留的内存空间。我猜错误会非常不同,可能大致如下:JVM内部错误

1.修复内存泄漏 其他贡献者提供了一系列好的建议,我将在这里重温

@克里斯蒂安库尔曼首先强调了这一点。 @KlasLindbäck随后在评论中链接了一些优秀的资源。 . 查找内存泄漏的一种方法是分析堆转储。有几种方法可以获得堆转储,但不包括第三方工具。。 . 内存转储是JVM在任何给定时间分析内存内容的一个非常有用的功能,但它们的使用需要一些经验,在本文中,我将与您分享我多年来学到的一些技巧和窍门,希望它们也对您有用。 @mKorbel总结了一些典型问题:*如果存在“全部关闭”,则在代码中搜索: JDBC, 菲利奥, 插座 等 在最后一个街区,你会很喜欢重新设计* 如果我没有设置Xmx标志呢

然后JVM默认为应用程序的内存大小通常适中

这是否意味着无限的内存使用

没有

我如何知道应用程序是用C还是Java冻结的

修复内存泄漏1

请注意,我回答的问题使用了“release”而不是“realize”。经过仔细考虑,我觉得答案应该保持不变。“释放内存”或“意识到存在问题”都不能真正解决问题。无论哪种方法,解决实际问题(内存泄漏)都更好

作为旁白。我不认为问题出在C代码中,而是通过一个简单的测试来启动应用程序。从命令行中可以看到任何一种方式。我认为问题出在Java代码上的原因是OutOfMemoryError可能是由一个功能齐全的JVM检测到的

如果是C应用程序。已使用JVM为自身或应用程序保留的内存空间。我猜错误会非常不同,可能大致如下:JVM内部错误

1.修复内存泄漏 其他贡献者提供了一系列好的建议,我将在这里重温

@克里斯蒂安库尔曼首先强调了这一点。 @KlasLindbäck随后在评论中链接了一些优秀的资源。 . 查找内存泄漏的一种方法是分析堆转储。有几种方法可以获得堆转储,但不包括第三方工具。。 . 内存转储是JVM在任何给定时间分析内存内容的一个非常有用的功能,但它们的使用需要一些经验,在本文中,我将与您分享我多年来学到的一些技巧和窍门,希望它们也对您有用。 @mKorbel总结了一些典型问题:*如果存在“全部关闭”,则在代码中搜索: JDBC, 菲利奥, 插座 等 在最后一个街区,你会很喜欢重新设计*
使用C本机代码运行应用程序并不意味着您可以通过JVM参数控制整个内存使用。 尝试为您的系统运行内存监控,例如,在Linux上使用shift+m进行内存使用排序,或者更好地配置应用程序的内存


运行应用程序后尝试获取内存转储有一些评测工具,大多数IDE还提供一些功能来检查java对象。

使用C本机代码运行应用程序并不意味着 n您可能能够通过JVM参数控制整个内存使用。 尝试为您的系统运行内存监控,例如,在Linux上使用shift+m进行内存使用排序,或者更好地配置应用程序的内存


运行应用程序后,尝试获取内存转储有一些评测工具,大多数IDE也提供了一些功能来检查java对象。

谢谢,伙计,但是为了找出问题,我们对代码进行了百万次的检查,但是它发生了2%。在高峰时间,应用程序将使用大约900MB内存,200MB空闲。我还尝试隐式调用垃圾收集器,但没有起到任何作用……我们对代码进行了数百万次检查,以找出问题所在,但它发生了2%。继续找。如果您不知道为什么会发生这种情况,这就加强了内存泄漏的可能性,我也尝试隐式调用垃圾收集器,但没有帮助。不,不会的。事实上,你没有意识到这将是毫无意义的强调,你没有太多的经验与这种类型的问题。众所周知,JVM会在感觉需要时调用GC,如果JVM开始耗尽内存,就会调用它。@parsa porahmad您必须分析应用程序,在代码中搜索,如果有接近所有的JDBC、FileIO、Socket等,然后在finally block中,那么您会非常喜欢重新设计谢谢您,伙计,我感谢你的帮助。谢谢你,伙计,但是我们检查了代码一百万次才发现这个问题,但是它发生了2%。在高峰时间,应用程序将使用大约900MB内存,200MB空闲。我还尝试隐式调用垃圾收集器,但没有起到任何作用……我们对代码进行了数百万次检查,以找出问题所在,但它发生了2%。继续找。如果您不知道为什么会发生这种情况,这就加强了内存泄漏的可能性,我也尝试隐式调用垃圾收集器,但没有帮助。不,不会的。事实上,你没有意识到这将是毫无意义的强调,你没有太多的经验与这种类型的问题。众所周知,JVM会在感觉需要时调用GC,如果JVM开始耗尽内存,就会调用它。@parsa porahmad您必须分析应用程序,在代码中搜索,如果有接近所有的JDBC、FileIO、Socket等,然后在finally block中,那么您会非常喜欢重新设计谢谢您,伙计,我非常感谢您的帮助。创建堆转储可能有助于分析出现的问题。或者,创建堆转储可能有助于分析出错的原因。或+1表示“分析”。。试图解决复杂应用程序中的内存不足问题。如果没有内存分析器,就像试图用一只胳膊绑在背后打架一样。+1表示“评测”。。试图解决复杂应用程序中的内存不足问题。如果没有内存分析器,就像试图用一只手臂绑在背后进行战斗。