Tag: 性能

资源泄漏与内存泄漏和性能之间的关系

资源泄漏我指的是Streams,StreamWriter(我认为他们正在使用文件描述符),Handles(GDI或用户也是Graphics字体)。 很快所有Closable对象都可以算作资源! 如果应用程序中存在一些资源泄漏。 假设一些InputStreams没有关闭,它们是否也可能因为垃圾收集器从内存中删除它们而导致内存泄漏? 另一个问题:资源泄漏会影响性能吗?

如何更改垃圾收集线程的优先级?

这个问题是重复的是否可以更改垃圾收集器线程的优先级? 这是一个古老的问题,从那以后事情可能会发生很大的变化。 它也没有澄清一切。 是否可以更改GC线程优先级? 我见过具有不同GC线程优先级的线程转储。 如果我们无法改变它,会发生什么? 此外,我知道高频交易平台希望保持GC线程优先级非常低,以便主线程在大多数时间运行,并且“停止世界”事件不会经常发生。

Slick2D游戏速度在变化

我使用Swing创建了一个游戏,它有点不可靠,所以我开始使用Slick2D游戏引擎重新制作它,我遇到了问题。 每次调用更新方法时,游戏的背景在屏幕上以一定的像素滚动。 这样可以保持加速和减速,因此背景会非常快速地移动,然后非常慢,并且会保持波动。 我已尝试*由delta(它监视刷新率,我认为!)在我的值上移动背景,但由于这不会给我一个确切的值我可以用来将背景重置到左侧(2背景移动)从右到左。左手一个向右移动-800像素)。 造成这种情况的原因是什么?如何克服它? 谢谢

在XML或java文件中编写相同的代码(用于布局)之间是否存在性能差异?

我知道你在XML和java文件中可以做什么和不能做什么有区别,但到目前为止我明白java文件可以做XML文件可以做的所有事情,至少我写的那本书写的是(见下面的引文)。 我的问题是,如果在java或xml中编写代码会有性能差异,如果是:两者中哪一个比另一个更受青睐? 这不是关于正确方法的问题,而是关于纯粹性能的问题。 我知道xml代码被编译成java代码,也许这比翻译java代码更有效率,因为编写xml编译器比编写java文件更容易? (基于xml更容易解析的假设,因为它更具连贯性,结构更简单) 从书中引用 这是本书的实际引用,该文章指出java文件可以执行xml文件可以执行的所有操作。 它通过首先解释有两种方式来创建用户界面,即以声明和编程方式: 声明性方法涉及使用XML来声明UI的外观,… … 程序化用户界面涉及编写Java代码以开发UI。 … 您可以以声明方式执行的所有操作,也可以通过编程方式执行。

Graphics2D绘图性能

我正在尝试使用Swing组件中的Java Graphics2D对象手动绘制“东西”,并且当我达到大约2000个正方形时,我命令对象绘制它变得非常慢。 我不知道这是否“普遍”。 2000个对象是否真的“渲染”了? Graphics2D对象是不是非常高效? 我应该停在现在的位置,而不是在尝试更复杂的东西之前切换到JOGL并且为时已晚?

将Dynamic ArrayList与ArrayList进行比较! 并删除动态数组中不存在的元素

我有两个ArrayLists , contactModels和list 。 contactModels是一个动态Arraylist,我需要比较两个列表并删除列表中的元素,这些元素在contactModels (DynamicArrayList)中不存在。 我试过嵌套循环,这个: for (int i = 0; i < list.size(); i++) { if(!contactModels.get(i).getEmpID().equals(list.get(i).getEmpID())) { databaseadapter.removeContact(contactModels.get(i)); } } 但我无法实现它。

使用MTOM进行WS下载操作

我想直接从Oracle数据库blobs文件通过WS与MTOM直接流到WS客户端。 我以为我找到了一种方法,在这里描述: http://www.java.net/forum/topic/glassfish/metro-and-jaxb/mtom-best-practices 但是在我看了一下InputStreamDataSource和javax.mail.util.ByteArrayDataSource后,我意识到他们在内存中存在一个’文档’的字节[]意味着流的ideea是徒劳的,因为我试图避免的是多个文档同时完全在内存中。 那么如何从数据库通过WS和MTOM流式传输到WS客户端? 任何的想法 ? 谢谢 克里斯

使用内存数据库存储数百万个临时值的效率如何?

我的应用程序目前存储数百万个Double元素进行计算。 这些值在用于计算结束时运行的特定算法之前只是临时值。 完成此计算后,可以丢弃数百万个值。 如果您需要更多细节,完整的故事就在这里 。 提出的解决方案之一是使用内存数据库。 因此,如果我使用此解决方案,我将使用此数据库将我的值存储在表中以替换我当前的Map<String, List> ,如: create table CALCULATION_RESULTS_XXX ( deal_id varchar2, values number ); (每个计算一个表, XXX是计算ID) 所以在计算过程中,我会做以下事情: 计算开始时,我创建CALCULATION_RESULTS_XXX表。 每次我需要添加一个值时,我都会在此表中插入一条记录。 在计算结束时,我使用表格内容作为我的算法。 最后,我放弃了这张桌子。 正如在其他主题中所解释的那样,目前,我的计算可能会在内存中存储数百Mb的数据,因为30 * 1,000,000的Double列表需要大约240Mb。 现在问题: 如果我使用内存数据库,我的内存消耗是否会降低? 关于数据库使用(或表创建),数据插入等,我需要注意哪些具体要点? 我想我会选择H2数据库 。 您认为这是满足我需求的最佳选择吗?

使用iFrame打开新窗口后,测试用例运行速度非常慢

甚至更新的信息:我现在对于为什么这个测试很慢这一点感到困惑。 我已经消除了对javascript的需求,如下所述,我添加了报告以确定延迟的位置。 这些是以“logger”开头的行。 我添加了这些行后面的时间戳,以便您可以看到延迟的位置。 这是代码的一部分,它看起来像混乱/需要很长时间(每次10分钟): wait.until(ExpectedConditions.elementToBeClickable(By.id(“ID”))); logger.log(LogStatus.INFO, “Waituntill is done and element is clickable”); /** logged as successfull at 17:45:51 */ driver.findElement(By.xpath(“//div[@class=’CLASS’]”)).click(); logger.log(LogStatus.INFO, “menu visible”); /** logged as successfull at 17:45:52 */ driver.findElement(By.xpath(“//*[@class=’CLASS’ and text()=’TEXT’]”)).click(); logger.log(LogStatus.INFO, “menu item is available and clickable.”); /** logged as successfull at 17:55:47 */ 奇怪的是,如果你按照测试过程,最后一步(点击)会立即显示,因为这会打开一个新窗口。 这不是10分钟后。 似乎在这一步之后内置了10个延迟。但是在我的代码中没有这样的东西。 上面的代码后跟: Set handles […]

Android应用启动缓慢,但在缓慢启动后工作正常

我更新了我的Android应用程序的代码,包括: ActiveAndroid TargetsdkVersion 22(现在布局中有一些Material Design元素) MinSdkVersion 9(这也是我早期的版本) Google Analytics v4,Google Play服务的一部分 我的早期版本是在Eclipse中创建的,此更新我正在使用Android Studio。 导入无效,因此我在Android studio中重新创建了该项目。 而对于主要部分,它似乎工作正常。 但是,当应用程序第一次启动时,它很慢。 在主屏幕显示之前,需要大约1.5秒的时间盯着白色屏幕。 之后,该应用程序运行良好,快速。 重新启动它,将应用程序保留在内存中时立即启动。 如果您将应用程序从内存中取出,则需要另外1.5秒(/ 2秒)才能开始使用。 我在Nexus 7(2013)和FairPhone(Android 4.2.2)上测试过它。 我不明白问题在哪里,也许你可以帮助我。 解决方案会很棒,但即使指出原因也会有很大帮助。 App.java的相关代码(扩展应用程序): @Override public void onCreate() { super.onCreate(); mContext = this; Log.v(“App”,”onCreate App – before GoogleAnalytics.getInstance(this)”); analytics = GoogleAnalytics.getInstance(this); analytics.setLocalDispatchPeriod(1800); // every 30 minutes tracker = analytics.newTracker(“REMOVED CODE FOR […]