javafx性能_对JavaFX Mobile应用程序进行性能分析

javafx性能

注意:本文最初发表于2009年,仅供参考。 请查阅我们其余的JavaFX文章 。

对于每个JavaFX Mobile应用程序开发人员而言,今天都是美好的一天。 你想知道为什么吗? 因为JavaME SDK 3.0已发布。 根据我午休时听到的消息,这是漫长而艰苦的工作,但结果却是一个了不起的工具。 祝贺整个团队,我期待与你们一起庆祝这一发布!

有些人可能现在想知道,JavaME SDK – JavaFX Mobile,连接在哪里? JavaME SDK终于实现了JavaFX Mobile迄今为止隐藏的功能:概要分析-我认为它成为JavaFX Mobile开发人员最重要的工具。 (好吧,也许我在这里有点偏见,因为绩效是我的日常工作……)

哦,是的,对。 JavaME SDK还是开发JavaME应用程序的绝佳工具-至少我听说过。

本文的其余部分将说明如何启用探查器,剖析时必须考虑的事项以及最终如何查看结果。

启用分析器

要启用对JavaFX Mobile应用程序的性能分析,您需要更改VM的设置。 只需更改一个预定义设备的属性即可方便地实现这一目的(或者,您也可以显式定义一个新的设备进行性能分析。)要启用默认设备DefaultFxPhone1的性能分析,请在〜/ javafx-sdk /中打开文件device.properties。 1.1 / work / 0,位于您的家庭文件夹中。 您需要至少启动一次模拟器,以便创建文件夹和文件。 如果您查看内容,它将类似于以下内容:

#
# Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
phone.number: 123456789
runtime.internal.com.sun.io.j2me.apdu.hostsandports = localhost:9025,localhost:9026
profiler.enabled: false
profiler.file: data.prof
netmon.enabled: false
runtime.internal.JAVA_HEAP_SIZE: 15728640
runtime.internal.MAIN_MEMORY_CHUNK_SIZE: 26214400
runtime.internal.microedition.locale: en-US

device.properties的文件内容

对于配置文件,我们仅对profiler.enabled和profiler.file属性感兴趣。 通过设置标志profiler.enabled启用分析:

profiler.enabled: true

属性profiler.file确定分析数据的存储位置。 如果不更改默认值,它将存储在data.prof文件中与device.properties相同的目录中。 更改属性后,必须重新启动仿真器和设备管理器。

运行分析会话

现在无论何时在模拟器中运行应用程序,都将对其进行概要分析。 应用程序完成后,结果将存储在device.properties中配置的文件中。 请注意,如果您运行两个应用程序,则整理第二个应用程序将覆盖第一个应用程序的配置文件数据,因此请确保在运行第二个应用程序之前复制文件。

在进行概要分析时,需要考虑两个问题。 首先,已分析的应用程序运行非常慢。 实际上,它运行得如此缓慢,以至于任何用户交互都是非常困难的,即使不是不可能的。 最好的选择是使您的测试完全自动化,而无需用户交互。 缓慢的执行也会影响动画,分析时几乎所有帧都将丢失。 如果执行更多帧很重要,则可以更改动画的持续时间。

要考虑的另一个问题是,在应用程序完成后,VM需要一些时间才能将分析数据写入文件系统。 如果直接关闭仿真器窗口,则VM将立即关闭,并且带有分析数据的文件通常已损坏。

解决此问题的一种方法是确保应用程序本身完成。 您可以随时调用FX.exit()退出JavaFX应用程序。 如果需要手动停止应用程序,请按设备上的红色取消按钮。 这会将JavaFX应用程序置于后台,并显示AMS(应用程序管理系统)。 从那里,可以通过选择正在运行的应用程序并从菜单中选择“结束”来结束应用程序而无需停止VM。

查看分析数据

这是JavaME SDK终于发挥作用的地方。 启动SDK,然后从工具菜单中选择条目“导入Java ME SDK快照...”,以加载在分析会话中生成的文件。 这将打开一个类似于NetBeans中探查器窗口的视图,并为您提供了易于使用的表示所生成数据的表示形式。

参考: Mike博客博客中的JCG合作伙伴 Michael Heinrichs对JavaFX Mobile应用程序进行了性能分析 。


翻译自: https://www.javacodegeeks.com/2012/06/profiling-javafx-mobile-applications.html

javafx性能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356043.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

egg.js java 生产数据_Egg 2.15.0 发布,阿里开源的企业级 Node.js 框架

值得注意的变化新特性[EXPERIMENT FEATURE] 支持单线程模式Bug 修复[TYPE] 支持config.static.dir的数组[TYPE] 修复中间件类型不兼容[TYPE] 修复当 esModuleInterop 为 true 时类型错误的bug其他优化文档设计原则企业级应用在追求规范和共建的同时,还需要考虑如何平…

SpringMVC工作原理

Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。 Spring的MVC框架主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、视图组成。 SpringMVC原理图 SpringMVC接口解释: DispatcherSer…

2015年的Java –重大事件

2015年是Java的一年,语言,平台,生态系统和社区继续主导着软件领域,只有Javascript对整个行业产生了类似的影响。 如果您错过了2015年的亮点,这里是发生的一些重大事件。 Java 20岁了,还没有死!…

java商品编写代码_商品品牌业务之后台Java代码的编写

今天是刘小爱自学Java的第146天。感谢你的观看,谢谢你。商品品牌业务之后台Java代码的编写-1.jpg (50.46 KB, 下载次数: 1)2021-2-5 00:22 上传学习计划安排如下:昨天实现了前端页面的编写以及发送请求,今天关于异步请求工具axios的简单说明。…

java中8种数据类型和默认值所占字节数

java 8种基本数据类型的默认值及所占字节数通过一段代码来测试一下 8种基本数据类型的默认值 1 package dierge;2 3 public class Ceshi { 4 int a; 5 double b; 6 boolean c; 7 char d; 8 float f; 9 byte e; 10 long h; 11 short j; 12 public static void main(String…

软件测试实验1:为三角形问题编写一个Java程序,并用Junit测试程序

实验报告 实验内容: 1.Install Junit(4.12), Hamcrest(1.3) with Eclipse 2.Install Eclemma with Eclipse 3.Write a java program for the triangle problem and test the program with Junit. 实验步骤: 1.在eclipse中安装Junit、Hamcrest和eclemma。…

java避免空指针异常_避免Java中的空指针异常

java避免空指针异常空指针异常是Java中最常见,最烦人的异常。 在这篇文章中,我想避免这种不希望的异常。 首先让我们创建引发空指针异常的示例 private Boolean isFinished(String status) { if (status.equalsIgnoreCase("Finish")) { ret…

比java好的_Java Spring真的比直接进行Java编程好吗

我已经读过依赖注入对于测试是有好处的,因为可以在没有依赖的情况下测试一个类,但是我想到的问题是,如果A类依赖于B或C或任何类,则独立于某个类的A类测试就是得出的测试结果为零,而不是失败或过去的测试.创建A类是为了执行某些操作,如果无论是使用新关键字还是在Spring中设置多…

SurfaceFlinger与Surface概述

基本原理: SF一个Client对应一个app中的SurfaceComposerClient, 分别是Binder的n端和b端,主要用来CreateSurface 一个app中有多个Activity,一个Activity一般有一个Surface(除SurfaceView,一个View就有一个Surface)&…

拼图项目动手指南

Jigsaw项目将把模块化引入Java平台,根据原始计划,它将在12月10日完成功能。 所以我们在这里,但是拼图在哪里? 在过去的六个月中肯定发生了很多事情: 原型问世 ,内部API的迫在眉睫的删除引起了很大的骚动 &…

java实现回文验证_LeetCode 精选 TOP 面试题(Java 实现)—— 验证回文串

文章目录一、题目描述1.1 题目验证回文串给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a cana…

Yarn 和 Npm 命令行切换 摘录

原文作者: Gant Laborde原文地址: https://shift.infinite.red/np...中文翻译: 文蔺译文地址:http://www.wemlion.com/2016/n... 好,想必你对新的 JavaScript 包管理工具 yarn 已经有所耳闻,并已通过 npm i -g yarn 进行了安装,现在想知道怎么…

Something about Giraffe (II)

先解決老師留的幾個問題再說吧,23333 XD.Giraffe 是一個將 Deep Reinforcement Learning 和 Neural Network 结合到一起的Chess AI 程式。 作者 Matthew Lai 是一個了不起的人,目前就職於 Google Deepmind. 隨著AlphaGo席捲全球,隨著Deep lea…

php 时间选择,PHP-在学说2中的日期之间选择条目

PHP-在学说2中的日期之间选择条目我将因这个无法修复的最小错误而发疯。 我想在两天之间选择条目&#xff0c;下面的示例说明了我所有的失败&#xff1a;选择1。$qb->where(e.fecha > . $monday->format(Y-m-d));$qb->andWhere(e.fecha < . $sunday->forma…

threadlocal线程_线程故事:Web应用程序中的ThreadLocal

threadlocal线程本周&#xff0c;我花了一些合理的时间来消除Web应用程序中的所有ThreadLocal变量。 原因是他们造成了类加载器泄漏&#xff0c;我们不能再适当地取消部署我们的应用程序。 取消部署应用程序后&#xff0c;当GC根目录继续引用应用程序对象时&#xff0c;将发生类…

java开发门禁指纹,指纹门禁

大兀人脸识别控制系统USB指纹仪DW9拓扑图(指纹为java系统直接采集、云或控制板直接比对&#xff0c;无需二次注册&#xff0c;人脸为htttp上传服务器或rtsp视频流比对方案)大兀活体指纹门禁采用BS架构&#xff0c;已集成进大兀人脸识别系统&#xff0c;如二次开发可直接调用jav…

使用Selenide进行有效的UI测试

等待奇迹 圣诞节是奇迹的时刻。 在新的一年的前夕&#xff0c;我们都为下一年制定了计划。 我们希望所有问题都将在最后一年消失&#xff0c;在来年出现奇迹。 每个Java开发人员都梦想着创造一个奇迹&#xff0c;使他成为世界上最有效的Java开发人员。 我想向你展示这样的奇…

android之seekbar

做了一个拖动滑块改变数值的demo 下附上代码: <SeekBar android:id"id/myseekbar" android:layout_width"match_parent" android:layout_marginTop"20dp" android:thumb"drawable/slider" android:layout_height&qu…

php 微信小程序 循环 多选,微信小程序实现多选功能

本文为大家分享了微信小程序实现多选功能的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下代码&#xff1a;{{num 1}}/{{quesyion.length}}{{question[num][0]}}A {{question[num][1]}}B {{question[num][2]}}C {{question[num][3]}}D {{question[num][4]}}正确答案…

今天在看慕课网的java学习路径

new对象是静态加载类 在编译时刻就需要加载所有可能使用的类 如果有有一个类没有 其他的类也无法使用 通过动态加载类可以解决这个问题 class for name 打印异常栈轨迹Stack Trace。说起栈轨迹,可能很多人和我一样,第一反应就是printStackTrace()方法 classforName //加载…