有关java程序的程序问题?

我有一个java程序程序它是一个典型的机器学习算法,通过一些方程更新一些参数的值:

更新参数的计算相当复杂我必须创建许多临时对象,但它们不会被引用到循环之外循环中的代码是CPU密集型的,并且不访问磁盘这个程序加载了一个相对较大的训练数据集,因此我向JVM授予了10G内存(-Xmx10G),这比它需要嘚大得多(通过“top”命令或窗口的任务管理器在?6G的峰值)

我在几台安装了SUN热点JDK / JRE 1.8的Linux机器上测试了它(centos 6,24G内存)和一台窗口机器(win7,12G)。我没囿指定除-Xmx之外的其他JVM参数这两台机器都专门用于我的程序。

在Windows上我的程序运行良好:每次迭代使用非常相似的运行时间。但是所有centos機器的运行时间都很奇怪。 它最初运行正常但在第7次/第8次迭代时显着减慢(减慢约10倍),然后在每次迭代中保持减速?10%

我怀疑它可能是由java程序的垃圾收集器造成的。因此我使用jconsole来监视我的程序。次要GC在两台机器上都经常发生这是因为程序在循环中创建了许多临时變量。此外我使用“jstat -gcutil $ pid $ 1s”命令并捕获统计信息:

但是,两种机器的统计数据差别很大:

  1. 窗口上的“S1”在0到50之间快速跳转而在centos上保持“0.00”。
  2. 窗口上的“E”变化非常迅速从0到100.当我每秒打印一次统计数据时,屏幕截图没有显示其增量为100.但是“E”增加得相当慢,趋于100然后降低到100 0,并再次增加

我的程序的怪异行为似乎是由于java程序 GC的缘故?我是java程序性能监视器的新手对于优化GC参数设置没有好处。你有什么建議吗非常感谢你!

这间我在网上找到的把java程序编译荿.exe文件的方法

获得一个TowerJ编译器该编译器可以将你的CLASS文件编译成EXE文件。 

下面这个FTP上曾经有过这个软件不知道现在是不是还在: 

下列关于java程序语言的描述中错誤的是()

D. 支持单继承和多继承

我要回帖

更多关于 java程序 的文章

 

随机推荐