Java 参数来改善 Java 效能

透过 Java 参数来改善 Java 效能 (艾群科技 萧松瀛)

作者  : 艾群科技 萧松瀛
  
  我们都知道, Java 在执行的时候会吃掉不少记忆体,而当记忆体不够
用的时候, JVM 会向系统要求更大的记忆体来使用。但是实际上对於 Ja
 va 来说,我们会发现资料可以存在许多不同的地方,其中有两个重要的
是  Heap 以及 Stack 。这两者有什么差别,我们在以後会提到,但是在
这之前,我们先来看一个程式: 
  
  public class testHeap
  {
      public static void main(String argv[])
      {
          StringBuffer sb = new StringBuffer();
          long starttime;
          long endtime;
          starttime = System.currentTimeMillis();
          for(int i=0; i <=100000; i++)
          {
              sb.append(i).append("hello").append(i);
              if(i % (100000/2) == 0)
              {
                 System.out.println(Runtime.getRuntime().totalMe
 mory());
              }
          }
          endtime = System.currentTimeMillis();
         System.out.println("Time: "+(endtime-starttim
 e));
      }
  }
  
  执行的结果如下
  
  C:/java/tmp> java testHeap
  2031616
  5578752
  10498048
  Time: 651
  
 在这里,我们看到 totalMemory 不断的上升,当然,这是正常现象,但
是实际上我们可以控制 JVM 一开始就抓取的记忆体大小,这样的好处是
 JVM 一开始就抓取了大量的 Heap 。怎么做呢? 我们先用 java -X 来看
看他有哪些额外的参数可以下,没错,我看到我感兴趣的几个参数 
  
      -Xms <size>         set initial Java heap size
      -Xmx <size>         set maximum Java heap size
      -Xss <size>         set java thread stack size
  
 接著,我想要让 JVM 一开始就抓取大量的记忆体,因此我选择 -Xms 这
个参数,底下是我的执行结果: 
  
  C:/java/tmp> java -Xms50000000 testHeap
  49741824
  49741824
  49741824
  Time: 480
  
 这时候我们看到 total 的记忆体维持不变,原因很简单,因为 testHea
p 使用记忆体的量,并没有超过我们一开始抓到的量。但是有一个很有趣
的现象是回圈内的时间已经更短了,换一个角度来说,就是程式跑起来更
有效率。这种以记忆体空间来换取执行时间的方式,也许并不是最棒的校
调方法,但是却是一个在不修改程式码的方式下,提高效率的方法。当然
,我们也可以限制记忆体的最大用量,参数则为 -Xmx 。一般说来,我并
不建议您设定 -Xmx ,原因很简单,因为一旦您设定了 -Xmx ,那么 JVM
  所抓取的记忆体量到了这个值之後,便不会再抓取记忆体,也就是说您
的程式将无法执行,我们看看底下的结果 
  
  C:/java/tmp> java -Xmx5000000 testHeap
  2031616
  5578752
 Exception in thread "main" java.lang.OutOfMemoryError
 
  
  C:/java/tmp>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: JAVA Modbus TCP上位机是一种基于JAVA语言开发的用于与Modbus TCP从机通信的上位机软件。Modbus是一种用于工业控制系统中设备之间通信的通信协议,采用TCP/IP网络进行通信。上位机是指控制系统中用于监视、管理和控制从设备的计算机或设备。 JAVA Modbus TCP上位机可以通过使用JAVA语言的网络编程库,与Modbus TCP从机进行通信。通过这个上位机软件,可以实现与一台或多台Modbus TCP从机设备的连接,获取从机设备的数据并实时显示在上位机界面上,同时也可以向从机设备发送控制命令。 该上位机软件还提供了友好的用户界面,可以实现监视、配置和管理Modbus TCP从机设备。用户可以根据自己的需求,自定义上位机界面中所显示的数据项和控制按钮。 JAVA Modbus TCP上位机还具备一定的安全性和稳定性。它可以通过使用SSL/TLS协议来进行加密,保护通信数据的安全性。同时,它还支持断线重连功能,一旦与Modbus TCP从机的连接断开,上位机软件会自动尝试重新连接。 总之,JAVA Modbus TCP上位机是一种方便、灵活且功能强大的工业控制系统软件,可用于与Modbus TCP从机进行通信、监视和控制。它能够提供实时的数据展示和控制操作,有助于提高工业控制系统的运行效率和可靠性。 ### 回答2: Java Modbus TCP上位机是一种基于Java语言开发的上位机系统,用于与Modbus TCP通信协议兼容的设备进行数据交互和控制操作。 Modbus TCP是一种常用的工业通信协议,主要应用于自动化控制领域。Java Modbus TCP上位机具备以下特点和功能: 1. 支持Modbus TCP通信协议:Java Modbus TCP上位机能够与Modbus TCP设备进行通信,实现数据读写和设备控制操作。 2. 可视化界面:通过使用Java的GUI库,Java Modbus TCP上位机可以提供直观的可视化界面,方便用户进行操作和监控。 3. 多线程处理:Java的多线程机制可使Java Modbus TCP上位机同时处理多个设备的通信请求,提高工作效率。 4. 数据解析和转换:Java Modbus TCP上位机可以对接收到的原始数据进行解析和转换,将其转化为可读的形式,便于用户理解。 5. 实时数据更新:通过与Modbus TCP设备建立持久连接,Java Modbus TCP上位机可以实时获取设备状态和数据,确保数据的及时性和准确性。 6. 报警和日志记录:Java Modbus TCP上位机可以实现设备状态监控和报警功能,并记录操作日志,方便用户分析和故障排除。 7. 数据存储和远程访问:Java Modbus TCP上位机具备数据存储功能,可以将设备数据保存到数据库或文件中,并支持远程访问和查询。 8. 可扩展性和定制化:Java Modbus TCP上位机可以根据用户需求进行定制和扩展,如添加特定功能模块或界面。 总之,Java Modbus TCP上位机是一种功能强大、易用且具有高度灵活性的上位机系统,适用于各种Modbus TCP通信协议兼容的设备。它能够帮助用户实现设备控制、数据监控和分析等各种操作,提高自动化控制系统的效能。 ### 回答3: Java Modbus TCP上位机是一种基于Java语言开发的用于与Modbus TCP设备进行通信的上位机软件。Modbus是一种常见的工业通信协议,它允许计算机与各种设备进行数据交换和控制。 Java Modbus TCP上位机可以实现与Modbus TCP设备之间的数据读写和控制操作。它提供了一套完整的Modbus TCP通信协议的实现,包括数据包的解析、分析和组装等功能。通过使用Java Modbus TCP上位机,我们可以轻松地实现与Modbus TCP设备的通信,读取设备的状态、参数和数据,并对设备进行控制。 Java Modbus TCP上位机具有很好的可扩展性和灵活性。它提供了丰富的API和功能库,可以方便地进行二次开发和定制化。我们可以根据具体的需求,灵活地进行编程和配置,以实现对不同类型和规格的Modbus TCP设备的通信和控制。 除了基本的Modbus TCP通信功能,Java Modbus TCP上位机还支持多线程,并且可以同时与多个Modbus TCP设备进行通信。它提供了友好的用户界面,方便用户进行设备的管理和操作。 总的来说,Java Modbus TCP上位机是一种功能强大的工业控制软件,它利用Java语言的优势和Modbus TCP通信协议的特点,实现了与Modbus TCP设备的稳定可靠的通信和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值