问题标签 [java-memory-leaks]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-leaks - 使用 JavaFX-3D 创建动画时内存泄漏
我构建了一个 JavaFX(8) 3D 应用程序,它从某个文件中读取数据并将其呈现在某个场景中。
为了渲染一个对象,我使用:
当我注释掉这一行时,为了禁用渲染,我根本没有内存泄漏。
但是当这条线运行时,应用程序会消耗越来越多的内存。我每秒有 30 帧,每秒内存消耗增加约 50MB。
这当然是,尽管在我使用的帧之间:
我分配给的 3D 对象graphicsContainer
是本地的,不会保存在任何静态/全局范围内。它们仅保存为 的子级graphicsContainer
,在每一帧上都会被清理。
尽管我每次删除graphicsContainer
.
知道如何让 JavaFX 3D 引擎释放过去的 3D 对象和渲染吗?
java-8 - 内存不足:Java 8 的元空间
我的产品有 256 MB 的 RAM。我已经将java 6升级到java 8。然后我开始面临与java 8相关的内存问题。随着Java 8的使用内存消耗在增加使用相同的代码,java 6的内存消耗是稳定的 我已经探索了很多关于元空间,java8并在元空间参数下方找到。
我尝试了以下组合并出现内存不足错误
1.MaxMetaspaceSize 50M MaxMetaspaceFreeRatio 60M MinMetaspaceFreeRatio 50M
2.MaxMetaspaceSize 30M
3.MaxMetaspaceSize 40M
4.MaxMetaspaceSize 50M
5.MaxMetaspaceSize 80M
但 2 到 3 小时后,出现内存不足元空间错误。
有人能解释一下元空间选项 MaxMetaspaceSize,MaxMetaspaceFreeRatio ,MinMetaspaceFreeRatio 是什么吗?
我如何确定合适的尺寸是多少?这些值的正确组合是什么,以避免生产中的内存不足实例并减少内存消耗?
groovy - GroovyCategorySupport 和“系统”内存泄漏
当我运行以下 JUnit 测试时,java 进程的内存不断增加。几个小时后,它使用了 2go 以上。但是,当我查看 jvisualvm 时,堆和 permgen 大小是稳定的,我看不到任何泄漏。测试运行-Xmx32m
我已经用 Groovy 2.4.7、Windows 和 JRE1.7_80、MacOS 和 JRE1.7_60 对其进行了测试。我无法使用 MacOS 和 JRE 1.8.0_91 重现此错误
我想这与 JRE1.7 中的一个错误有关,我正在寻找一种方法来缓解这个问题:
- 我的测试可能是错的?如何在不泄漏堆空间或 permgen 空间的情况下泄漏“系统”内存?
- 它是 Groovy 和 JRE 1.7 之间的“已知”错误或不兼容吗?
- 如何使用 1.7 jre 的 groovy 类别而不会遭受这种内存泄漏?
编辑
我可以通过调用来重现这个错误VMPluginFactory.getPlugin().invalidateCallSites()
,它用这个“纯java”单元测试翻译:
其实只要new SwitchPoint()
够用。
java - JFrame 永远不会被垃圾回收
我有一个需要打开多个 JFrame 的应用程序(它是一个日志查看器,有时您需要在单独的窗口中查看一堆日志进行比较)。
似乎 JVM(OS X 上的 Java 8 更新 101)持有对 JFrame 的强引用,这会阻止它被垃圾收集,并最终导致抛出 OutOfMemoryError。
要查看问题,请以 200 兆字节的最大堆大小运行此问题。每次打开一个窗口,都会消耗 50 兆字节的 RAM。打开三个窗口(使用 150 兆字节的 RAM)。然后关闭三个窗口(调用 dispose),这应该释放内存。然后尝试打开第四个窗口。抛出 OutOfMemoryError 并且第四个窗口没有打开。
我已经看到其他答案指出内存将在必要时自动释放以避免用完,但这似乎并没有发生。
javafx - JavaFX、TreeTableView、RowFactory 和内存泄漏
我正在使用 JavaFX TreeTableView 来显示销售订单。父行包含“主”记录,子行包含有关订单的信息,包括订购的每个产品的行项目。我正在使用 RowFactory 根据其当前状态突出显示表中的行。RowFactory 的代码以以下代码开头:
如您所见,每次调用行工厂时,Callback 都会返回一个新的 TreeTableRow。根据 JavaFX 8.0 文档,系统负责管理行的创建,并在适当的时候重用它们。System.out.println 调用记录了该方法被调用的次数。多次上下滚动表格,以及更新销售数据库导致的数据刷新,导致该方法在较短的时间内被调用数万次。随着最终用户广泛使用 TreeTableView,我在程序中的内存使用量继续增长。
分析应用程序表明 HashTable 和 PsuedoClass(我相信 css 的东西)以及诸如 byte[] 和 char[] 和 int[] 之类的东西正在使用非常大量的内存。我尝试了堆大小和垃圾收集器的不同组合,但最终结果总是相同的,因为应用程序最终会耗尽堆空间。
搜索答案表明有些人遇到了这个问题,我发现如果我不做任何行突出显示,从而不调用行工厂,程序在管理内存方面要好得多。任何人都对可能导致此问题的原因或可能的解决方案有任何见解?
android - Android:内存泄漏
我在我的使用下面的代码activity class
:
在我的onCreate
使用中:
但它会引发如下错误:
我需要使用它,static
因为我将在我的Service class
.
我的CloseActivies.class
:
java - 使用球衣的 JAX RS 的内存问题
我们目前在生产服务器上遇到了一些麻烦,因为它消耗了太多内存。其中一个泄漏可能来自球衣客户。我发现了以下两个其他问题以及如何:
- 如何正确共享 JAX-RS 2.0 客户端
- 关闭 JAX RS 客户端/响应
- https://blogs.oracle.com/japod/entry/how_to_use_jersey_client
我从中得到什么,我应该重用客户端,还可能重用 WebTargets?还建议关闭响应,但是如何使用 .request() 执行此操作?
代码示例,每小时用不同的路径调用大约 1000 次:
所以我的问题是如何正确使用 API 来防止上述示例的泄漏?
java - 切换 gif 时应用程序被杀死
我正在编写一个 android 应用程序,当用户单击 gif 图像时,我想在其中切换两个 gif 图像。
我已经编写了以下代码来在 gif 之间切换。
“setGifImageResource”的代码是
OnDraw 方法如下
问题是当我长时间在 gif 之间切换时。应用程序崩溃,但日志中没有致命错误。只有我可以看到以下日志。
08-22 13:47:25.091 3704 3922 I WindowManager: WIN DEATH: Window{f737847d0 u0 com.jijith.gifanimation/com.jijith.gifanimation.MainActivity} 08-22 13:47:25.091 3704 3922 D WindowManager: disposeInputChannel mInputChannel: f737847 com.jijith.gifanimation/com.jijith.gifanimation.MainActivity(服务器)08-22 13:47:25.091 3704 3878 W Looper:忽略 fd 407 上不再注册的意外 epoll 事件 0x19。08-22 13:47:25.092 3704 4951 I ActivityManager: 进程 com.jijith.gifanimation (pid 27542) 已死亡 (2665,191)
08-22 13:47:25.093 3704 3878 D InputDispatcher:等待应用程序准备好输入:27542。原因:等待,因为触摸窗口的输入通道未向输入调度程序注册。该窗口可能正在被移除。08-22 13:47:25.093 3704 3878 D InputDispatcher: 找不到连接 ~ name='f737847 com.jijith.gifanimation/com.jijith.gifanimation.MainActivity (server)', fd='407', p='0x7d35b68420 '
08-22 13:47:25.098 3704 4951 W ActivityManager:强制删除 ActivityRecord{74e4a0ad0 u0 com.jijith.gifanimation/.MainActivity t195}:应用程序死亡,没有保存状态
08-22 13:47:25.220 3704 4951 I WindowManager_SurfaceController: com.android.server.wm.WindowStateAnimator.destroySurface:2905 com 调用的破坏表面 Surface(name=com.jijith.gifanimation/com.jijith.gifanimation.MainActivity)。 android.server.wm.WindowStateAnimator.destroySurfaceLocked:1119 com.android.server.wm.WindowState.removeLocked:1860 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2928 com.android.server.wm.WindowManagerService.removeWindowLocked:2873 com.android.server.wm.WindowManagerService.removeWindowLocked:2683 com.android.server.wm.AppWindowToken.removeAllWindows:608 com.android.server.wm.AppWindowToken.removeAppFromTaskLocked:37
android - Google 搜索小部件泄漏了侧系统服务器中的内存。如何从平台端(从框架端)解决此内存泄漏
当我们在主屏幕上使用 Google 搜索小部件时,我观察到系统服务器内部的内存泄漏。每次点击主页按钮时,Google 小部件都会更新,并持有com.android.server.appwidget.AppWidgetServiceImpl类的多个引用
查看以下来自内存分析工具的分析报告。
由“ dalvik.system.PathClassLoader @ 0x12c1d220 ”加载的“ com.android.server.appwidget.AppWidgetServiceImpl ”的一个实例占用了47,168,416(65.38%)字节。内存在“ dalvik.system.PathClassLoader@0x12c1d220 ”加载的“ com.android.server.appwidget.AppWidgetServiceImpl ”的一个实例中累积。
重现问题的步骤:
- 恢复出厂数据。
- 使用 Google 登录帐户完成设置向导。
- 不要断开互联网连接。
- 从最近的选项卡中清除所有应用程序。
- 按HOME键>>等待1秒>>按最近的应用程序键>>等待1秒>>按HOME键等待1秒。
- 重复步骤 5 多次(100 次)并使用以下命令观察系统服务器堆内存
adb shell dumpsys meminfo
我观察到“Dalvik Heap”中“Heap Size”和“Heap Alloc”列的增加
在之前和之后找到以下堆大小。
如果我禁用了谷歌搜索应用程序,则不会观察到系统服务器内存泄漏。
我是内存泄漏问题调试的新手。帮助得出结论,谁在吃侧系统服务器中的堆大小,为什么?
谢谢