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

原创 2015年11月18日 22:17:54

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。
111222

management GC  YGC  OGC   Java -cp target..运行测试包
JPS命令可查看Java heap状态
222111
java也有内存泄露问题
垃圾回收(创建用不到的对象,垃圾无法回收,造成内存泄露)
333333
年轻代存放存活时间短的对象,年轻代变老的过程(晋升)
减少年老代GC次数
parallelOldGC多线程并行垃圾回收
444444
用于对时间敏感的应用
555555
对时间敏感
666666
对吞吐率敏感
777777
以下具有四个阶段垃圾回收机制与用户程序并行执行。并不是完全同步。
888888
promotion failure内存不够情况时发生
concurrent mode failure (默认oldgc已经完成)
999888
版权声明:本文为博主原创文章,未经博主允许不得转载。

由transient的使用方法切入,谈java序列化

Blog转载自 》》》程序媛想事儿 源url:http://www.cnblogs.com/lanxuezaipiao/p/3369962.html Java transient关...

再学java基础(4)Object流、Serializable序列化、transient

import java.io.*; public class TestObjectIO { public static void main(String args[]) throws Excep...

JAVA 对象序列化(三)——transient以及Externalizable的一种替代方法(使用Serializable)

transient(瞬时)关键字       当我们队序列化进行控制时,可能某个特定子对象不想让Java的序列化机制自动保存与恢复。如果子对象表示的是我们不希望将其序列化的敏感信息(如密码),通...
  • djun100
  • djun100
  • 2014年01月11日 17:49
  • 1381

java transient(不会序列化)、static关键字的作用

transient java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目...

Java对象序列化之 transient 使用小记

我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable...
  • xuxu120
  • xuxu120
  • 2016年03月24日 11:02
  • 290

java 序列化 serialVersionUID transient

为什么要序列化? 我们所说的序列化是“对象状态”的序列化,将对象转化为流的过程就是序列化;从流恢复为对象的过程就是反序列化;序列化的都是对象的状态,所以静态字段不会被序列化。 序列化的应用场景 1...

java学习——序列化与 Transient 关键字

java学习——序列化与 Transient 关键字 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java 系列技术中一个较为重要的技术点,在大部分情况下,开发人员只...
  • J__King
  • J__King
  • 2014年09月23日 07:50
  • 415

java 对象序列化 与 静态变量 及 transient

原文 序列化是将对象状态转换为可保持或传输的格式的过程,它也是RMI用来在不同JVM之间传递对象的机制,或者通过方法的参数或者作为一个方法调用的返回值。但有三个例外序列化不需要读或者写入到流: 序列...

java学习——序列化与 Transient 关键字

转自 :http://www.ibm.com/developerworks/cn/java/j-lo-serial/index.html?ca=drs-#major5 引言 将...

Java——transient and 序列化

序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。 在网络传输过程中,可以是字节或是XML,json等格式。而字节的,XML,json编码格式可以还原完...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java笔记分享-CrazyChao(Java重点及补充 序列化 Transient 远程调试 GC原理)
举报原因:
原因补充:

(最多只允许输入30个字)