- 浏览: 14447 次
- 性别:
- 来自: 深圳
最新评论
-
bitzsk:
讲的很好.
为什么不把所有的class文件编译成机器码
文章列表
https://stackoverflow.com/questions/22930195/understanding-proxy-arguments-of-the-invoke-method-of-java-lang-reflect-invoca
There's in fact little you can do with the actual proxy. Nevertheless it's part of the invocation context, and you can use it to gain information on the proxy using refl ...
java中非volatile变量读取是从工作内存中读取,不一定可以读到主内存的最新数据。volatile变量保证每次读取都要从主内存中拿。
写了一段代码来验证这一点
public class MemoryMode {
private volatile boolean flag = false;//这个类型是volatile的时候,结果是conditionChanged:true
public void setFlag(){
flag = true;
}
private boolean conditionC ...
为什么不把所有的class文件编译成机器码
- 博客分类:
- jvm
jvm执行方法有两种方式:解释执行和编译执行。
编译执行是直接执行本地的机器码,编译执行的效率要高于解释执行的效率。
那么,为什么不直接把java代码编译成机器码呢,这样运行起来会更快?
直接编译成机器码的话,那不就是C语言的做法了么。java有一个特性,是可以运行中动态加载类。
要支持运行中动态加载类这个特性,就没法做到全部编译成机器码,编译的时候都不知道运行时的类是什么,没法编译。
还有一个原因是,java编译的代码,是要到不同的平台上运行的,搞成机器码就平台相关的了。
上面是为什么在编译期间不把代码编译成机器码的原因。
那么还有还有JIT呢,J ...
Intellij上面起一个web服务,从浏览器请求的时候,页面出不来,看后台日志,发现一个方法抛了NoClassDefFoundError错误。
怀疑是类依赖的包没有在classpath下,查看了maven依赖,包是依赖进去的。
然后怀疑是依赖的包损坏了,导致类加载不到。mvn clean一下,清除后重新下载,发现问题仍然存在。
依赖包损坏加载的的时候会报什么错?知道的同学告诉一下。
写道
public class SQLParser{ ........ static { cfg.setTemplateLoader(stl); cfg.setDefaultEncoding(& ...
为什么major gc要比minor gc慢很多
- 博客分类:
- jvm
能想到的原因有两个:
1. major gc使用的算法复杂度比minor gc高;
major gc 采取的是mark-sweept或者mark-conpact,minor gc也要标记,但minor gc是标记后复制。将要被复制到的survivor区又是一个连续的内存区。major gc的清除可能快一些,但是整理操作这个复杂度就要高很多了。
2.major gc要处理的对象要比minor gc的多。
新生代分配的对象大都是朝生夕死的,所以存活下来要复制的对象也不是很多。老年代里的对象都是大概率存活的,要整理数量就多。
现在内存那么便宜,老年代不用整理算法也换成复制 ...
类需要满足以下3个条件才能算是“无用的类”
1. 该类所有的实例已经被回收
2. 加载该类的ClassLoder已经被回收
3. 该类对应的java.lang.Class对象没有任何对方被引用
第2个条件有一些费解。
可能是因为ClassLoder保存了类加载到jvm方法区的位置信息,保存了类的引用。但是ClassLoader又不具备主动卸载类的功能,所以类加载后,引用就一直保持。
为什么ClassLoader不实现主动卸载类的功能?因为ClassLoader是负责加载类的,并不会去关心加载的类会被谁使用,既然不知道加载的类会被谁使用,也就不知道类是不是没有 ...
Hadoop IPC源码分析(一)
类RPC
RPC包含了一系列的静态类和静态方法。
使用PROTOCOL_ENGINES = new HashMap<Class,RpcEngine>();
作为实现的接口—>RPCEngine的一个缓存
nosql数据库
软件的变化:1.用户数量的变化:以前的用户数量少,并且变化量不大;现在的用户数量大,并且随着时间增长;
2.应用需求的变化:以前的软件解决流程固定的问题,把人工做的事情映射给计算机做,达到完成业务流程的速度更快,犯得错误更少,业务流程早就一文本的形式规定好了,如取款机业务,机票预订业务等等。
现在软件解决的问题业务流程是未知的,没有现有的模型去模仿的,业务规则随时会改变。实现这种业务所需要的后台数据库必须具备灵活多变的特性。
3.计算设施的变化
以前倾向于使用集中式计算设施,通过提高计算机的计算性能来适应需求的增长;
现在倾向于使用分布式计算 ...
从NodeManager.java开始分析。
NodeManager类完成的工作就是启动一系列的服务(Service),Service是具有状态的类,状态有
NOTINITED,
INITED,
物理主机不能连kvm虚拟机
- 博客分类:
- kvm
kxvemn 20:39:54使用virt-manger在物理主机host1上建立了虚拟机vm,使用默认网络default,vm可以连接host1和外网。host1也可以连接vm。
但是从物理主机host2连接不到vm,请问怎么设置网络,使得其他的物理主机能够连通虚拟机。
谢谢。kxvemn 20:40:16虚拟机使用的kvm、江南浪子 20:42:50echo 1>/proc/sys/net/ipv4/ip_forwardkxvemn 20:43:15物理机操作系统是centoskxvemn 20:44:16上面的操作是在虚拟机操作系统执行还是物理机操作系统中执行啊?
k ...