我知道JVM是一个囤积者,但这让我很震惊:启动时使用180MB netbean的非常基本的“联系编辑器”GUI,增加了一些基本的通用实例?
我没有建立1998年的第一人称射击游戏。我请求社区在这一点上给我启发。这是一个JConsole打印屏幕:
另外:我在启动时有18个线程永远不会死。除了初始线程和Swing的调度线程之外还有其他线程吗?
答案 0 :(得分:1)
我不熟悉Contact Editor
,但嵌入式数据库或模拟器可能负责。我最喜欢的JVM为典型的Swing GUI运行10个线程,但只有三个是活动的,没有一个真正做很多。此example个人资料视觉上“忙碌”program,此example使用人工小堆来突出显示范围。
答案 1 :(得分:1)
线程并不是真正的内存问题(这18个中大约有一半只是因为你处于调试模式IIRC)。其他的名字非常明显(我的猜测):AWT-Shutdown(检查所有窗口是否配置,然后退出JVM),AWT-Windows(从操作系统获取事件),Java2D处理器(图像数据清理)。
我不知道您正在运行的程序,但如果它基于Netbeans 平台,可能会增加一些额外的内存要求,但不是180MB。我猜大部分内存要么没有使用(只是保留),要么是实际数据占用内存。
进行比较:
细分:
大约一半看起来像缓存图像(大背景图像:))我省略了int [] / Object [] / HashMap.Entry []引用相同的数据)
如果您想查看示例应用的细分 - > VisualVM - >监控 - >堆转储 - >按保留大小查找x个最大的对象。