- 浏览: 153160 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
xfei6868:
fengyie007 写道xfei6868 写道请问你有没有结 ...
maven jetty7 插件设置 -
fengyie007:
xfei6868 写道请问你有没有结合 web.xml 配置 ...
maven jetty7 插件设置 -
xfei6868:
请问你有没有结合 web.xml 配置 和 spring结合 ...
maven jetty7 插件设置 -
nianzhi:
tomcat7.0之后这样配置就不行了。根本没有作用。
tomcat地址栏传中文 -
nianzhi:
...
tomcat地址栏传中文
所有字节码都是用sun虚拟机编译的.以下内容都是在网上查阅,加上一些自己的分析,如果有不对之处请大家指出来.
1,循环外内定义变量 和 循环内定义变量
下面是代码和字节码,通过比较可以知道,两种方法字节码基本上是相同的.两者性能基本上相等.
在实际使用时建议根据语义来决定,不需要在循环外部使用的就定义在循环内部,这样也可以减少变量冲突的可能.
代码:
public static void f1() { Object s; for (int i = 0; i < 10; i++) { s = new String("sss"); } } public static void f2() { for (int i = 0; i < 10; i++) { Object s = new String("sss"); } }
字节码:
public static void f1() { // 0 0:iconst_0 // 1 1:istore_1 // 2 2:goto 18 // 3 5:new #15 <Class String> // 4 8:dup // 5 9:ldc1 #17 <String "sss"> // 6 11:invokespecial #19 <Method void String(String)> // 7 14:astore_0 // 8 15:iinc 1 1 // 9 18:iload_1 // 10 19:bipush 10 // 11 21:icmplt 5 // 12 24:return } public static void f2() { // 0 0:iconst_0 // 1 1:istore_0 // 2 2:goto 18 // 3 5:new #15 <Class String> // 4 8:dup // 5 9:ldc1 #17 <String "sss"> // 6 11:invokespecial #19 <Method void String(String)> // 7 14:astore_1 // 8 15:iinc 0 1 // 9 18:iload_0 // 10 19:bipush 10 // 11 21:icmplt 5 // 12 24:return }
2, 字符串String相加 和 StringBuffer相加
String相加在虚拟机内部还是采用StringBuffer来实现的,但是字节码指令上相比直接采用StringBuffer来说增加了不少.
代码:
public void f1() { String a = ""; a += "a"; a += "b"; a += "c"; System.out.println(a); } public void f2() { StringBuffer ab = new StringBuffer(); ab.append("a"); ab.append("b"); ab.append("c"); System.out.println(ab); }
字节码:
public void f1() { // 0 0:ldc1 #15 <String ""> // 1 2:astore_1 // 2 3:new #17 <Class StringBuffer> // 3 6:dup // 4 7:aload_1 // 5 8:invokestatic #19 <Method String String.valueOf(Object)> // 6 11:invokespecial #25 <Method void StringBuffer(String)> // 7 14:ldc1 #28 <String "a"> // 8 16:invokevirtual #30 <Method StringBuffer StringBuffer.append(String)> // 9 19:invokevirtual #34 <Method String StringBuffer.toString()> // 10 22:astore_1 // 11 23:new #17 <Class StringBuffer> // 12 26:dup // 13 27:aload_1 // 14 28:invokestatic #19 <Method String String.valueOf(Object)> // 15 31:invokespecial #25 <Method void StringBuffer(String)> // 16 34:ldc1 #38 <String "b"> // 17 36:invokevirtual #30 <Method StringBuffer StringBuffer.append(String)> // 18 39:invokevirtual #34 <Method String StringBuffer.toString()> // 19 42:astore_1 // 20 43:new #17 <Class StringBuffer> // 21 46:dup // 22 47:aload_1 // 23 48:invokestatic #19 <Method String String.valueOf(Object)> // 24 51:invokespecial #25 <Method void StringBuffer(String)> // 25 54:ldc1 #40 <String "c"> // 26 56:invokevirtual #30 <Method StringBuffer StringBuffer.append(String)> // 27 59:invokevirtual #34 <Method String StringBuffer.toString()> // 28 62:astore_1 // 29 63:getstatic #42 <Field PrintStream System.out> // 30 66:aload_1 // 31 67:invokevirtual #48 <Method void PrintStream.println(String)> // 32 70:return } public void f2() { // 0 0:new #17 <Class StringBuffer> // 1 3:dup // 2 4:invokespecial #55 <Method void StringBuffer()> // 3 7:astore_1 // 4 8:aload_1 // 5 9:ldc1 #28 <String "a"> // 6 11:invokevirtual #30 <Method StringBuffer StringBuffer.append(String)> // 7 14:pop // 8 15:aload_1 // 9 16:ldc1 #38 <String "b"> // 10 18:invokevirtual #30 <Method StringBuffer StringBuffer.append(String)> // 11 21:pop // 12 22:aload_1 // 13 23:ldc1 #40 <String "c"> // 14 25:invokevirtual #30 <Method StringBuffer StringBuffer.append(String)> // 15 28:pop // 16 29:getstatic #42 <Field PrintStream System.out> // 17 32:aload_1 // 18 33:invokevirtual #56 <Method void PrintStream.println(Object)> // 19 36:return }
发表评论
-
jrebel 5.0.0 破解
2012-06-17 16:06 2236下载地址: http://download.csdn.net ... -
jetty服务器java.sql.SQLException: Already closed处理
2012-04-19 17:24 2068在jetty的数据源配置中添加如下配置 <Set n ... -
mvn install
2011-08-05 15:51 0mvn install:install-file -Dgrou ... -
weblogic中使用commons-lang包报java.lang.NoSuchMethodError解决办法
2010-08-31 17:01 5256在weblogic中发布的应用使用了commo ... -
java RSA密钥生成
2010-07-23 14:12 4895在网上找了下RSA的密钥的创建,结果全是用java序列化Pub ... -
maven jetty7 插件设置
2010-07-23 13:55 5232jetty-maven-plugin设置: <plug ... -
eclipse常用插件更新地址
2009-11-11 09:37 1790findbugs http://findbugs.cs.umd ... -
java class文件魔数与版本对应
2009-10-21 14:36 1959major minor Java platform vers ... -
maven配置文件
2009-10-18 23:43 1429完整的自定义目录结构的maven配置文件。 ... -
eclipse远程调试
2009-07-17 01:01 2275set JAVA_OPTS=-server -Xdebug - ... -
删除eclipse3.4中的P2更新管理器
2009-04-12 18:14 1772原文地址:Equinox p2 Removal ... -
jdk1.3中保存jpeg图片
2009-04-09 15:21 1286因为在jdk1.3中没有ImageIO类,只能使用下面的方法来 ... -
JSR大全
2009-04-01 13:32 20691 ,Real-time Specification for ... -
apache commons-lang-2.3 StringUtils.java 学习笔记
2009-04-01 13:17 0StringUtils中方法的操作对象是java.lang.S ... -
eclipse常用插件(Update sites)
2008-12-30 14:19 1604findbugs http://findbugs.cs.umd ... -
weblogic 9.2 发布EJB
2008-12-29 16:05 1585将EJB的jar包放到domain的autodeploy目录下 ... -
confluence2.x 破解
2008-12-26 16:06 1271首先去官方网站下载confluence-2.x的安装包。 然后 ... -
eclipse.ini内存设置各参数含义
2008-11-10 13:13 5351-vmargs -Xms128M -Xmx512M -XX:P ... -
Java性能优化技巧集锦
2008-09-07 03:51 850可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的 ... -
jdbc性能优化
2008-09-07 03:35 1100jdbc程序的性能主要由两个因素决定,一是数据库本身的性质,另 ...
相关推荐
根据给定的文件信息,以下是一些重要的Java知识点和常见问题解答: ### 1. Java2(JDK1.2)环境配置 在Java2环境下,环境变量的配置与JDK1.1有所不同,不再使用JAVA_HOME来指定JVM的位置,而是将其与系统路径结合...
java资料 java java收集资料01 javaEE java项目 JAVASE GUI SWING 多线程和播放器的制作
Java问题定位技术是Java开发过程中不可或缺的一环,它涉及到对应用程序的性能监控、错误排查以及异常处理等多个方面。本文将深入探讨如何有效地定位Java中的内存泄漏、线程死锁和CPU占用过高等常见问题。 首先,...
在这个“java 异常 问题收集 Exception”主题中,我们将深入探讨Java异常处理的基本概念、常用类以及最佳实践。 1. 异常的概念与分类: Java中的异常是程序运行时出现的不正常情况,通常会导致程序中断。Java将...
java资料 java java收集资料01 javaEE java项目 JAVASE GUI SWING
24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集机制.zip24.java垃圾收集...
最近java收集。。。。。。。。。最近java收集。。。。。。。。。最近java收集。。。。。。。。。最近java收集。。。。。。。。。最近java收集。。。。。。。。。最近java收集。。。。。。。。。最近java收集。。。。...
Java版MSN是一款基于Java语言开发的即时通讯软件,它的出现为开发者提供了一个了解和学习如何用Java实现网络通信和即时消息传递的实例。这个压缩包包含的资源是关于Java MSN项目的源码,对于Java开发者,尤其是对...
9. **JVM内存管理**:理解Java虚拟机(JVM)的工作原理,包括内存区域(如堆、栈、方法区)、垃圾收集机制和内存溢出问题,有助于优化应用程序性能。 10. **设计模式**:设计模式是解决常见软件设计问题的最佳实践...
Java后端面试问题涵盖了许多核心知识点,主要集中在Java虚拟机(JVM)、Java基础、并发编程和性能调优等方面。以下是对这些领域的详细说明: ### JVM #### 内存区域与垃圾回收 JVM内存主要分为堆(Heap)、栈...
垃圾收集器的使用小诀窍可以帮助开发者写出高效的Java程序,避免内存相关的问题。 Java中的内存管理实际上就是对象的管理,其中包括对象的分配和释放。对于程序员来说,分配对象使用new关键字;释放对象时,只要将...
Java问题定位技术,特别是JVM调优,是Java开发者必须掌握的重要技能。JVM(Java虚拟机)是Java程序运行的基础,它负责解释执行字节码,并管理内存、线程和类加载等关键任务。调优JVM可以提高应用程序的性能、稳定性...
这个名为"java经典问题.rar"的压缩包文件包含了作者收集的一份关于Java的经典问题文档——"java经典问题.doc",很可能是针对这些知识点的总结和解析。 1. **异常处理**:Java异常处理是编程中必不可少的部分,涉及...
3. **内存管理**:Java使用垃圾收集器进行自动内存管理,但开发者仍可能遇到内存泄漏、对象生命周期管理等问题。 4. **多线程**:Java支持多线程编程,因此并发控制、线程安全、死锁和活锁是常见的挑战。 5. **...
漫谈Java垃圾收集器 Java垃圾收集器是Java虚拟机(JVM)中的一种自动内存管理机制,旨在释放程序员从手动内存管理的繁琐...但是,Java垃圾收集器也存在一些问题,需要程序员根据实际情况选择合适的垃圾收集器和参数。
垃圾收集器(Garbage Collector,简称GC)是Java语言的一项重要特性,它自动化管理内存,显著减轻了开发者手动管理内存负担,避免了常见的内存泄漏问题,提高了程序的稳定性和安全性。在Java世界里,GC不仅是面试和...
Java垃圾收集必备手册 Java 垃圾收集是 Java 语言中的一种自动内存管理机制,旨在释放不再使用的内存资源,以避免内存泄漏和提高程序性能。在这篇手册中,我们将深入探究 Java 垃圾收集的基础知识,包括垃圾收集的...
java收集相关资料,和大家分享.PDF的多
9. **JVM(Java虚拟机)**:理解JVM的工作原理,包括类加载机制、内存模型、垃圾收集策略等,有助于优化程序性能和解决内存溢出等问题。 10. **设计模式**:Java开发者应该熟悉常见的设计模式,如单例模式、工厂...
java 垃圾整理收集 1垃圾收集器如何做 2垃圾的基本要求