首页 > 编程知识 正文

关于java性能的小笔记(java代码性能分析)

时间:2023-12-12 16:20:08 阅读:314842 作者:KFZO

本文目录一览:

关于java构造器的几点学习笔记

1.构造器: 一个创建对象时被自动调用的特殊方法,为的是初始化。构造器的名称应与类的名称一致。

例如:public class Person {

private String name;

private String password;

public Person() {

super();

// TODO Auto-generated constructor stub

}

public Person(String name, String password) {

super();

this.name = name;

this.password = password;

}

}

public static void main(String[] args) {

//初始化

Person person = new Person("张三","123");

}

2.创建一个对象时,系统会该对象的属性 默认初始化,数值类型属性的值为0,布尔类型false,引用类型设置为null.

3在子类中调用父类的构造器来初始化父类,那就用合适的参数来调用super(),你用没有参数的super()来调用父类的构造器(注:同时也没有使用this()来调用其他构造器),父类缺省的构造器会被调用,如果父类没有缺省的构造器,那编译器就会报一个错误。

4. this

4.1构造器中调用this只能放在第一位;

4.2构造器中调用this只能调用一次;

4.3普通方法中不能使用this()调用构造器;

5. 构造器的作用

5.1:创建对象,凡是必须和 new 一起使用

5.2:完成对象的初始化操作

6.注意事项

6.1:构造器的名称和当前所在类的名称相同

6.2:禁止定义返回类型,千万不要使用 void 作为返回类型(这属于普通方法)

6.3:在构造器中,不需要使用 return 语句(其实构造器是有返回值的,返回的是当前创建对象的引用)

谁有比较简单的JAVA学习的笔记呀?

个人觉得,还是要看下书比较好~!

如果基础不好的话,建议先看《Java2实用教程》,清华大学出版社出版的。

然后,再看《JAVA编程思想》,这本书写的很详细,绝对值得看~!

林信良java学习笔记jdk7与6有什么区别吗

没什么区别,只是jdk7相比jdk6增加了一些功能、优化了性能以及简化了语法,比如:

1.更简单的异常处理语句

2.字符串支持switch

3.二进制值定义

4.泛型类型推断

5.多线程中增加了并行分解框架(fork/join),以前看的时候这个还在测试

6.jvm优化、支持非java语言、正式支持G1垃圾收集器

JAVA学习笔记!!!

我看过这个书

手头就拿着看呢

是林信良写的

写的还是不错的

我建议你还是把这本书跟

将java基础的数结合起来看效果会更好

怎么做JAVA程序性能优化

1)尽量指定类、方法的final修饰符。带有final修饰符的类是不可派生的,Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,此举能够使性能平均提高50%。

2)尽量重用对象。由于Java虚拟机不仅要花时间生成对象,以后可能还需要花时间对这些对象进行垃圾回收和处理,因此生成过多的对象将会给程序的性能带来很大的影响。

3)尽可能使用局部变量。调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变量,如静态变量、实例变量等,都在堆中创建速度较慢。

4)慎用异常。异常对性能不利,只要有异常被抛出,Java虚拟机就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制程序流程。

5)乘法和除法使用移位操作。用移位操作可以极大地提高性能,因为在计算机底层,对位的操作是最方便、最快的,但是移位操作虽然快,可能会使代码不太好理解,因此最好加上相应的注释。

6)尽量使用HashMap、ArrayList、StringBuilder,除非线程安全需要,否则不推荐使用 Hashtable、Vector、StringBuffer,后三者由于使用同步机制而导致了性能开销。

尽量在合适的场合使用单例。使用单例可以减轻加载的负担、缩短加载的时间、提高加载的效率,但并不是所有地方都适用于单例。

java学习笔记林信良操作题答案

jstat(JVM Statistics Monitoring Tool)是用于监控虚拟机各种运行状态信息的命令行工具。他可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,在没有GUI图形的服务器上,它是运行期定位虚拟机性能问题的首选工具。

jstat位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。可见,Jstat是轻量级的、专门针对JVM的工具,非常适用。

jstat 命令格式

jstat -option [-t] [-hlines] vmid [interval [count]]

参数解释:

Option — 选项,我们一般使用 -gcutil 查看gc情况

vmid — VM的进程号,即当前运行的java进程号

interval– 间隔时间,单位为秒或者毫秒

count — 打印次数,如果缺省则打印无数次

参数interval和count代表查询间隔和次数,如果省略这两个参数,说明只查询一次。假设需要每250毫秒查询一次进程5828垃圾收集状况,一共查询5次,那命令行如下:

jstat -gc 5828 250 5

对于命令格式中的VMID与LVMID需要特别说明下:如果是本地虚拟机进程,VMID(Virtual Machine IDentifier,虚机标识符)和LVMID(Local Virtual Machine IDentifier,虚机标识符)是一致的,如果是远程虚拟机进程,那VMID的格式应当是:[protocol:][//] lvmid [@hostname[:port]/servername]

option

选项option代表这用户希望查询的虚拟机信息,主要分为3类:类装载、垃圾收集和运行期编译状况,具体选项及作用如下:

–class 监视类装载、卸载数量、总空间及类装载所耗费的时间

–gc 监视Java堆状况,包括Eden区、2个Survivor区、老年代、永久代等的容量

–gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间

–gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比

–gccause 与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因

–gcnew 监视新生代GC的状况

–gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间

–gcold 监视老年代GC的状况

–gcoldcapacity 监视内容与——gcold基本相同,输出主要关注使用到的最大和最小空间

–gcpermcapacity 输出永久代使用到的最大和最小空间

–compiler 输出JIT编译器编译过的方法、耗时等信息

–printcompilation 输出已经被JIT编译的方法

常见术语

1、jstat –classpid : 显示加载class的数量,及所占空间等信息。

Loaded 装载的类的数量

Bytes 装载类所占用的字节数

Unloaded 卸载类的数量

Bytes 卸载类的字节数

Time 装载和卸载类所花费的时间

2、jstat -compiler pid显示VM实时编译的数量等信息。

Compiled 编译任务执行数量

Failed 编译任务执行失败数量

Invalid 编译任务执行失效数量

Time 编译任务消耗时间

FailedType 最后一个编译失败任务的类型

FailedMethod 最后一个编译失败任务所在的类及方法

3、jstat -gc pid: 可以显示gc的信息,查看gc的次数,及时间。

S0C 年轻代中第一个survivor(幸存区)的容量 (字节)

S1C 年轻代中第二个survivor(幸存区)的容量 (字节)

S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

EC 年轻代中Eden(伊甸园)的容量 (字节)

EU 年轻代中Eden(伊甸园)目前已使用空间 (字节)

OC Old代的容量 (字节)

OU Old代目前已使用空间 (字节)

PC Perm(持久代)的容量 (字节)

PU Perm(持久代)目前已使用空间 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)

FGC 从应用程序启动到采样时old代(全gc)gc次数

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT 从应用程序启动到采样时gc用的总时间(s)

4、jstat -gccapacity pid:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小

NGCMN 年轻代(young)中初始化(最小)的大小(字节)

NGCMX 年轻代(young)的最大容量 (字节)

NGC 年轻代(young)中当前的容量 (字节)

S0C 年轻代中第一个survivor(幸存区)的容量 (字节)

S1C 年轻代中第二个survivor(幸存区)的容量 (字节)

EC 年轻代中Eden(伊甸园)的容量 (字节)

OGCMN old代中初始化(最小)的大小 (字节)

OGCMX old代的最大容量(字节)

OGC old代当前新生成的容量 (字节)

OC Old代的容量 (字节)

PGCMN perm代中初始化(最小)的大小 (字节)

PGCMX perm代的最大容量 (字节)

PGC perm代当前新生成的容量 (字节)

PC Perm(持久代)的容量 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

FGC 从应用程序启动到采样时old代(全gc)gc次数

5、jstat -gcutil pid:统计gc信息

S0 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比

S1 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比

E 年轻代中Eden(伊甸园)已使用的占当前容量百分比

O old代已使用的占当前容量百分比

P perm代已使用的占当前容量百分比

YGC 从应用程序启动到采样时年轻代中gc次数

YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)

FGC 从应用程序启动到采样时old代(全gc)gc次数

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT 从应用程序启动到采样时gc用的总时间(s)

6、jstat -gcnew pid:年轻代对象的信息。

S0C 年轻代中第一个survivor(幸存区)的容量 (字节)

S1C 年轻代中第二个survivor(幸存区)的容量 (字节)

S0U 年轻代中第一个survivor(幸存区)目前已使用空间 (字节)

S1U 年轻代中第二个survivor(幸存区)目前已使用空间 (字节)

TT 持有次数限制

MTT 最大持有次数限制

EC 年轻代中Eden(伊甸园)的容量 (字节)

EU 年轻代中Eden(伊甸园)目前已使用空间 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

YGCT 从应用程序启动到采样时年轻代中gc所用时间(s)

7、jstat -gcnewcapacitypid: 年轻代对象的信息及其占用量。

NGCMN 年轻代(young)中初始化(最小)的大小(字节)

NGCMX 年轻代(young)的最大容量 (字节)

NGC 年轻代(young)中当前的容量 (字节)

S0CMX 年轻代中第一个survivor(幸存区)的最大容量 (字节)

S0C 年轻代中第一个survivor(幸存区)的容量 (字节)

S1CMX 年轻代中第二个survivor(幸存区)的最大容量 (字节)

S1C 年轻代中第二个survivor(幸存区)的容量 (字节)

ECMX 年轻代中Eden(伊甸园)的最大容量 (字节)

EC 年轻代中Eden(伊甸园)的容量 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

FGC 从应用程序启动到采样时old代(全gc)gc次数

8、jstat -gcold pid:old代对象的信息。

PC Perm(持久代)的容量 (字节)

PU Perm(持久代)目前已使用空间 (字节)

OC Old代的容量 (字节)

OU Old代目前已使用空间 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

FGC 从应用程序启动到采样时old代(全gc)gc次数

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT 从应用程序启动到采样时gc用的总时间(s)

9、stat -gcoldcapacity pid: old代对象的信息及其占用量。

OGCMN old代中初始化(最小)的大小 (字节)

OGCMX old代的最大容量(字节)

OGC old代当前新生成的容量 (字节)

OC Old代的容量 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

FGC 从应用程序启动到采样时old代(全gc)gc次数

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT 从应用程序启动到采样时gc用的总时间(s)

10、jstat -gcpermcapacitypid: perm对象的信息及其占用量。

PGCMN perm代中初始化(最小)的大小 (字节)

PGCMX perm代的最大容量 (字节)

PGC perm代当前新生成的容量 (字节)

PC Perm(持久代)的容量 (字节)

YGC 从应用程序启动到采样时年轻代中gc次数

FGC 从应用程序启动到采样时old代(全gc)gc次数

FGCT 从应用程序启动到采样时old代(全gc)gc所用时间(s)

GCT 从应用程序启动到采样时gc用的总时间(s)

11、jstat -printcompilation pid:当前VM执行的信息。

Compiled 编译任务的数目

Size 方法生成的字节码的大小

Type 编译类型

Method 类名和方法名用来标识编译的方法。类名使用/做为一个命名空间分隔符。方法名是给定类中的方法。上述格式是由-XX:+PrintComplation选项进行设置的

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。