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
序列化是什么:
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例
序列化的什么特点:
如果某个类能够被序列化,其子类也可以被序列化。声明为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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统