软件架构就是在软件开发领域,实现软件系统目标的一个架构。当一个人新进入一个系统的时候,首先要摸清的就是这个系统的架构,从形式上去理解内容,从分析其部分到综合其整体。 一个软件系统是为了满足特定的功能需求。正如一个组织部门是为了完成一项事业。这都是在成事的层面。背后则是真正的推动力量必然是人, 是利益 ...
分类:
其他好文 时间:
2018-08-16 10:40:01
阅读次数:
110
对象优先在Eden分配,且新生代对象晋升到老年代有多种情况, 现在做一个总结: (1)、Eden区满时,进行Minor GC,当Eden和一个Survivor区中依然存活的对象无法放入到Survivor中,则通过分配担保机制提前转移到老年代中。 (2)、若对象体积太大, 新生代无法容纳这个对象,-X ...
分类:
其他好文 时间:
2018-08-16 00:44:30
阅读次数:
202
为每个对象生命周期不一样,jvm在做内存管理的时候,就帮我们分成了三个区域: 1. 新生代(回收频率高) 新生和老年默认大小比例为1:2 2. 老年代(回收频率低) 最好所有的对象都不要进入老年代,最好新生代能及时回收空对象释放空间供下次使用。 3. 永久代(一般放类的加载信息,常量,静态变量)。 ...
分类:
其他好文 时间:
2018-08-12 18:51:16
阅读次数:
184
很多人认为方法区(或者hotSpot虚拟机中的永久代)是没有垃圾收集的,java虚拟机规范中确实说过不要求虚拟机在方法区实现垃圾收集,而且在方法区中进行垃圾收集的“性价比”一般比较低:在堆中,尤其是新生代中,常规应用进行一次垃圾收集一般可以回收70% ~ 95%的空间,而永久代的垃圾收集效率远低于此 ...
分类:
其他好文 时间:
2018-08-10 16:02:44
阅读次数:
887
垃圾收集器 HotSpot虚拟机的垃圾收集器 Java虚拟机规范中对垃圾收集器如何实现没有任何规定,因此不同版本的虚拟机所提供的垃圾收集器都可能有很大的差别,并且都会提供参数供用户自己应用的特点和要求组合出各个年代使用的收集器。java 1.7之后的Hotspot虚拟机包含的收集器如下: 新生代收集 ...
分类:
编程语言 时间:
2018-08-05 15:54:54
阅读次数:
125
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问 ...
分类:
编程语言 时间:
2018-08-02 19:10:57
阅读次数:
145
-Xms 分配堆最小内存,默认为物理内存的1/64-Xmx 分配堆最大内存,默认为物理内存的1/4-Xmn 设置堆中新生代内存大小-XX:PermSize 分配方法区最小内存,默认为物理内存的1/64-XX:MaxPermSize 分配方法区最大内存,默认为物理内存的1/4-Xss jvm启动的每个 ...
分类:
其他好文 时间:
2018-08-02 15:02:45
阅读次数:
162
一、JVM常用启动参数 -Xms:设置堆的最小值。 -Xmx:设置堆的最大值。 -Xmn:设置新生代的大小。 -Xss:设置每个线程的栈大小。 -XX:NewSize:设置新生代的初始值。 -XX:MaxNewSize:设置新生代的最大值。 -XX:PermSize:设置永久代的初始值。 -XX:M ...
分类:
其他好文 时间:
2018-07-30 12:07:07
阅读次数:
194
JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式) -XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形 ...
分类:
其他好文 时间:
2018-07-29 15:23:52
阅读次数:
228
Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决两个问题:给对象分配内存以及回收分配给对象的内存。 对象的分配可能有以下几种方式: 1、JIT编译后被拆散为标量类型并间接地栈上分配 2、对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配 3、 ...
分类:
其他好文 时间:
2018-07-29 15:19:52
阅读次数:
159