您的位置:首页 > 编程语言 > Java开发

Java笔记分享-CrazyChao(Java重点及补充 序列化 Transient 远程调试 GC原理)

2015-11-18 22:17 441 查看
Java重点及补充 序列化  Transient  远程调试 GC原理

序列化是什么:

序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。

序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例

序列化的什么特点:

如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态, transient代表对象的临时数据。

什么时候使用序列化:

一:对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。

二:java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。

Java序列化(其它)

Transient
java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持。

作用:

Java的serialization提供了一种持久化对象实例的机制。当持久化对象时,可能有一个特殊的对象数据成员,我们不想用serialization机制来保存它。为了在一个特定对象的一个域上关闭serialization,可以在这个域前加上关键字transient。当一个对象被序列化的时候,transient型变量的值不包括在序列化的表示中,然而非transient型的变量是被包括进去的。

java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身。这可以极大地方便网络上的一些操作,但同时,因为涉及到安全问题,所以并不希望把类里面所有的东西都能存储(因为那样,别人可以通过序列化知道类里面的内容),那么我们就可以用上transient这个关键字,它的意思是临时的,即不会随类一起序列化到本地,所以当还原后,这个关键字定义的变量也就不再存在。

通常,我们写的程序都要求特定信息能持久存在或保存到磁盘上,以供一个程序使用或用在同一个程序的另一次运行上.这种持久性可以通过几种方式来实现,包括写到数据库中或是利用JAVA为对象序列化提供的支持.不管我们选用什么方法,类实例的持久性都是通过保存类的域的状态来完成的,保存这些状态,以便以后可以对它们进行访问或使用它们来创建相同的实例.然而,有可能并不是所有的域都需要被保存起来.当一个实例被持久化时,其内部的一些域却不需要持久化,则可以用trainsient修饰符告诉编译器指定的域不需要被持久保存.

具体列举。。。。上机调试。。。。

Java远程调试:

1.JDB使用方式命令行执行、可以设置断点(stop at 参数)等(jdb -attache localhost:)

连接上VM之后,可以使用threads命令查看所有线程

参数设置,通过local等命令查看变量值

架包测试执行命令java -cp target(架包名称路径)

2.eclipse图形化界面

通过Run中Debug configuration配置Debug客户端,远程连接VM。

分布式开发需要了解GC(garbage collection)(主要了解后台架构)

主要管理Java heap,定时判断内存是否需要继续存在,内存回收机制。分三个带:young generation,old generation,permanent generation。

111


management GC  YGC  OGC   Java -cp target..运行测试包

JPS命令可查看Java heap状态

222


java也有内存泄露问题

垃圾回收(创建用不到的对象,垃圾无法回收,造成内存泄露)

333


年轻代存放存活时间短的对象,年轻代变老的过程(晋升)

减少年老代GC次数

parallelOldGC多线程并行垃圾回收

444


用于对时间敏感的应用

555


对时间敏感

666


对吞吐率敏感

777


以下具有四个阶段垃圾回收机制与用户程序并行执行。并不是完全同步。

888


promotion failure内存不够情况时发生

concurrent mode failure (默认oldgc已经完成)

999
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 笔记分享