- 博客(12)
- 资源 (2)
- 收藏
- 关注
原创 Java内存溢出与内存泄漏
内存溢出:内存溢出就是指在指定大小的内存空间,写入了超出大小的数据(越界).或者没有足够的内存,供程序分配。内存泄漏:程序在运行过程中动态申请的内存空间不再使用后没有及时释放,从而很可能导致应用程序内存无线增长。更广义的内存泄露包括未对系统的资源的及时释放,比如句柄等。结果: 1.内存溢出:程序将停止 2.内存泄漏:程序不会停止但是效率会降低,内存泄漏过多也可
2016-03-16 22:14:11
1161
原创 大话设计模式(程杰)笔记(二)
16.状态模式 当一个对象的内在状态改变时允许改变其行为,这个对象看起来是改不了其类 主要解决的是当控制一个对象状态改变的条件表达过于复杂时的情况,把状态的判断逻辑转移到表示不同转态行为的一系列类当中,可以把复杂的判断逻辑简化 17.适配器模式 将一个类的接口转换为客户希望的另外一个接口。Adapter模式使得原本由于接
2016-03-10 22:55:35
659
原创 大话设计模式(程杰)笔记(一)
1.面向对象设计模式 通过封装、继承、多态降低程序耦合度,以提高程序的灵活性、可扩展性和可复用性 1.分离业务逻辑和界面逻辑 1.简单工厂模式: 1.通过继承提高程序的可修改性(修改时只需修改单独子类,不影响其它子类); 2.基类重载构造函数由入口参数,构造不同的子类对象(若所有子类和基类属性一致,此方法非常有效)
2016-03-10 22:54:59
1367
原创 深入理解Java 虚拟机(周志明)笔记(六)——Java内存分配
5.2.内存分配 可用参数 -Xmx 最大可用内存 -Xms 初始内存 -Xmn 新生代内存 -XX:SurvivorRatio 设置年轻代中Eden区与一个Survivor区的大小比值 -XX:PretenureSizeThread
2016-03-10 22:30:20
516
原创 深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(四)
5.1.4.查看GC日志 1.虚拟机提供了 -XX:+PrintGCDetails 参数,告诉虚拟机在发生垃圾收集行为时打印内存回收日志,并且在进程退出的时候输出当前的内存各区域分配情况。 2.每个收集器的日志格式有所不同,但是虚拟机设计者为了方便用户阅读,将各个收集器的日志都维持一定的共性。例如
2016-03-10 22:29:06
452
原创 深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(三)
5.1.3.垃圾回收的具体实现————垃圾收集器. 有一个垃圾收集器是最好的。不同垃圾收集器适合不同的环境。不同收集器可搭配使用,已达到整体最优。 概念: 1.并发与并行 并发(Concurrent):两件事情在同一时刻同时发生,如用户线程与垃圾收集器线程同时执
2016-03-10 22:28:30
399
原创 深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(二)
5.1.2.HotSpot的算法实现 可达性分析算法 1.枚举根节点(GC Roots) 问题:1.应用中的引用太多,如果逐个检查,会消耗很多时间 2.GC停顿消耗时间 GC停顿:可达性分析算法必须保证一致性,分析期间系
2016-03-10 22:27:51
471
原创 深入理解Java 虚拟机(周志明)笔记(五)——垃圾收集器(一)
内存回收对象:堆内存和方法区内存 (注:程序计数器、虚拟机栈和本地方法栈的内存随着方法或线程的结束时,自然被回收) 内存回收的问题:1.哪些内存需要回收? 2.什么时候回收? 3.如何回收?
2016-03-10 22:26:09
480
原创 深入理解Java 虚拟机(周志明)笔记(四)——Java对象创建过程
Java对象(通过new关键字创建的普通对象,不包括数组和Class对象)创建过程 1.检查指令的参数是否在常量池中定位到一个类的符号引用,并检查该符号引用代表的类是否已被加载、解析和初始化过。若有则进入下一步,否则必须执行相应的类加载过程, 2.为对象分配内存空间:空间大小在类加载完成后便可确定。 内存分配策略
2016-03-08 00:01:31
574
原创 深入理解Java 虚拟机(周志明)笔记(三)——Java对象在内存中的存储与访问
Java对象在内存中的存储 1.对象存储布局 要求:对象起始地址必须是8字节的整数倍 1.对象头:1.存储对象自身的运行时数据(Mark Word):哈希码、GC分代年龄、锁状态标志…… 非固定的数据结构,总长度为32/64bit 2.类型指针:即对象指向它的元数据指针,虚拟机通
2016-03-08 00:00:14
465
原创 深入理解Java 虚拟机(周志明)笔记(二)——Java数据分区
JVM运行时(一个处理器(的一个核)执行一条线程)数据分区 1.线程共享的区(数据被处理器各线程共享,即各线程共有的区) a.方法区(Method Area):存储已被虚拟机加载的类信息、常量、静态变量、即使编译器编译后的代码。(Class文件信息) 常量池:存放编译时生成的各种字面量和引用。在类加载后数据进入运行时常量池。 例如
2016-03-07 23:58:10
325
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人