我一直在分析我的应用程序的x64版本,因为内存使用率非常高,所有这些似乎来自JavaFX MediaPlayer,我正确地释放了监听器和事件处理程序.
这是鲜明的对比.
开始时的x32版本

现在开始使用x64版本

x32版本保持在256mb以下,而x64将在gig上拍摄; 这是两个人都可以播放他们的播放列表.
所有代码都是一样的.
JDK:jdk1.8.0_20
JRE:jre1.8.0_20
两者都有VM参数
-XX:MinHeapFreeRatio=40 -XX:MaxHeapFreeRatio=70 -Xms3670k -Xmx256m -Dsun.java2d.noddraw=true -XX:+UseParallelGC
Run Code Online (Sandbox Code Playgroud)
在另一个x64 Java应用程序上发生同样的问题

这是一个错误还是我忽略了什么?
我写了以下代码
import java.awt.BorderLayout;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
final public class Test
{
JFrame frame;
DrawPanel drawPanel;
boolean up = false;
boolean down = true;
boolean left = false;
boolean right = true;
private int timeStep = 0;
private int ballYTravel = 100;
private int BALL_NUM = 24;
public static void main(String... args)
{
new Test().go();
}
private void go()
{
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
drawPanel = new DrawPanel();
frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
frame.setResizable(false);
frame.setSize(800, 600);
frame.setLocationByPlatform(true);
frame.setVisible(true);
moveIt();
} …Run Code Online (Sandbox Code Playgroud) 我一般都是第一次感到困惑.我昨晚在几分钟内编写了这段代码,效果很好.现在突然扩展我的列表之后它会抛出一个ArrayIndexOutOfbounds:63
private final String[] itemName = new String['?'];
private final String[] itemID = new String['?'];
private void loadList() throws IOException {
final URL itemListURL = new URL("testlist.txt");
final BufferedReader buffer = new BufferedReader(
new InputStreamReader(itemListURL.openStream()));
String line;
while ((line = buffer.readLine()) != null) {
final String[] itemListArray = line.split(",");
final int i = Integer.parseInt(itemListArray[0]);
this.itemID[i] = itemListArray[0];
this.itemName[i] = itemListArray[1];
}
buffer.close();
}
Run Code Online (Sandbox Code Playgroud)
谁能指出我做错了什么?