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
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

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

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

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

java 序列化 serialVersionUID transient

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

Java——transient and 序列化

序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。 在网络传输过程中,可以是字节或是XML,json等格式。而字节的,XML,json编码格式可以还原完...

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

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

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

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

[疯狂Java]I/O:其它自定义序列化的方法(transient、writeReplace、readResolve、Externalizable)

1. 一种不是很好的排除序列化——transient关键字:     1) 如果你不想让对象中的某个成员被序列化可以在定义它的时候加上transient关键字进行修饰,例如: class A impl...

Java序列化的机制和原理

  • 2013-01-29 09:49
  • 70KB
  • 下载

java序列化原理与算法

  • 2011-11-28 17:07
  • 146KB
  • 下载

java序列化、反序列化;关键字transient、volatile

java序列化与反序列化的作用 序列化定义:把对象转化为字节序列的过程称为对象的序列化。 反序列化定义:把字节序列恢复成对象的过程称为对象的反序列化。 序列化、反序列化实现方式:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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