9 j2370530

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 32w+

垃圾收集器

HotSpot虚拟机中的垃圾收集器Serial收集器新生代收集器Serial收集器是一个单线程的收集器,即只会使用一个CPU或一条收集线程去完成来及收集工作,更重要的是在进行来及收集时,必须暂停其他所有的工作线程,直到收集结束。serial收集器的工作过程Serial收集器对于运行在Client模式下的虚拟机来说是一个很好的选择。ParNew收集器

2017-03-12 16:06:55

HotSpot算法实现

枚举根节点GC停顿在进行对象的可达性分析时,必须在一个能确保一致性的快照中进行(一致性即在整个分析期间,整个执行系统不可以出现分析过程中,对象引用关系还在不断变化的过程),该点不满足的话分析结果准确性就无法得到保证。所以GC进行时必须停顿所有Java线程。所以枚举根节点时必须要停顿。HotSpot枚举的实现在HotSpot的实现中,是使用一组称为OopMap(Ordinary Ob

2017-03-12 11:41:10

java虚拟机中如何判断对象是否存活

程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的。Java堆和方法区则不一样,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,只有在程序处于运行期间时才能知道会创建哪些对象,这部分内存的分配和回收都是动态,垃圾收集器主

2017-03-10 00:21:44

垃圾收集算法

标记--清除算法(Mark-Sweep)算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。不足:第一点,效率问题,标记和清除两个过程的效率都不高                    第二点,空间问题,标记清除之后会产生大量不连续的内存碎片,空间碎片太多可能导致以后在程序运行过程中需要分配较大对象时,无法找到足够的连续内存而不   

2017-03-09 00:08:36

HotSpot虚拟机对象的创建

注意:此处对象的创建过程仅适用于普通的Java对象,不包括数组和Class对象对象的创建过程虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用(类的权限定类名??),并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在

2017-02-28 00:05:33

JAVA运行时数据区域:内存区域与内存溢出异常

方法区(Method Area)存储内容 用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。与线程的关系 各个线程共享该内存区域 异常 这区域的内存回收目标主要是针对常量池的回收和对类型的卸载。当方法区无法满足内存分配需求时,将抛出OutMemoryError异常。 运行时常量池运行时常量池(Runtime Constant Pool)是方法

2017-02-26 13:19:42

线程安全

线程安全线程安全的定义当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。Java语言中各种操作共享数据的情况,按照线程安全程度,由强至弱来排序:不可变(Immutable)不可变的对象一定是线程安全的,无论是对象的方法实现还

2017-02-16 23:38:01

线程的3中实现方式

使用内核线程实现使用用户线程实现使用用户线程加轻量级进程混合实现

2017-02-14 23:46:19

java内存模型的原子性、可见性、有序性(先行发生原则)

原子性、可见性、有序性Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这3个特征来建立的。原子性(Atomicity):由Java内存模型来直接保证的原子性变量操作包括read、load、use、assign、store、write,我们大致可以认为基本数据类型的访问读写是具备原子性的。如果需要一个更大范围的原子性操作,Java内存模型提供了lock和unlo

2017-02-13 23:48:13

Java内存模型(JMM)

Java内存模型 概念 内存模型(memory model):在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。作用 java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。(注:此处变量与java编程中所说的变量有所区别,它包括了实例字段、静态字段、构成数组对象的元素,但不包括局部变量和方法参数,因为后者是线程

2017-02-12 23:20:31

杂记

\n代表换行:移动到下一行\r代表回车:将光标移到一行的前面Unix系统里,每行结尾只有“”,即“\n”;Windows系统里面,每行结尾是“”,即“\n\r”;Mac系统里,每行结尾是“”即"\r"。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

2016-12-04 17:07:44

RPC框架——hessian的使用方式

RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象,无法在编译器检查错误,只能在运行期检查。RPC(remote procedure call protocol)是指远程过程调用,即两台服务器A,B,一个应用

2016-11-19 23:44:43

MySQL中concat函数(连接字符串)

MySQL中concat函数使用方法:CONCAT(str1,str2,…)  返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 c

2016-10-23 17:39:20

FROM_UNIXTIME 格式化MYSQL时间戳函数

函数:FROM_UNIXTIME作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示。语法:FROM_UNIXTIME(unix_timestamp,format)返回表示 Unix 时间标记的一个字符串,根据format字符串格式化。format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符。根据format字符串格式化dat

2016-10-17 23:13:30

eclipse导入工程中文乱码问题

eclipse之所以会出现乱码问题是因为:eclipse编辑器选择的编码规则是可变的。一般默认都是UTF-8或者GBK,当从外部导入一个工程时,如果该工程的编码方式与eclipse中设置的编码方式不同,就会产生中文的乱码问题,这其中还有以下几种情况。如果导入的整个工程的编码方式与eclipse的编码方式有冲突,那么这个工程里所有的中文都是乱码;如果所有工程的编码方式与eclipse工作空间

2016-04-16 16:53:50

This function has none of DETERMINISTIC, NO SQL解决办法

创建存储过程时出错信息:ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_b

2015-07-26 18:20:25

杂记

windows 键+R    打开运行窗口  输入services.msc可以打开服务

2015-07-25 10:03:14

c++内存中字节对齐问题详解

一、什么是字节对齐,为什么要对齐?    现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。    对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数

2014-04-14 13:09:17

关于extern ”C“以及vs2008里的实例

1.首先介绍一下vs2008对C和C++文件的分别编译在一个工程下分别编译C和C++文件并链接之

2014-04-07 22:16:29

vs2008下的C/C++混合编程

//C_Header.h(头文件)#ifndef _C_HRADER_H#define _C_HEADER_Hextern void print(int i); #endif//C_Heade.c(C源文件)#include #include"C_Header.h"void print(int i){ printf("i = %d\n",i);}//Main.cpp(.cp

2014-04-07 18:36:14

查看更多

勋章 我的勋章
    暂无奖章