一:Java技术体系模块图二:JVM内存区域模型1.方法区也称"永久代” 、“非堆”, 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。运行时常...
分类:
其他好文 时间:
2014-08-25 19:11:44
阅读次数:
267
一、JVM的生命周期1.JVM实例对应了一个独立运行的java程序它是进程级别a)启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点b)运行。main()作为该程...
分类:
其他好文 时间:
2014-08-25 19:10:14
阅读次数:
230
同样,一个Class对象必须知道自己的超类、超级接口。因此,Class对象会引用自己的超类和超级接口的Class对象。这种引用一定是实例引用。(实际上,超类、超级接口的引用也存储在常量池中,但为了区分依赖类的引用,将它特殊表述一下。)因此,我暂且得到两条结论。结论一:持有一个Class对象的引用,则...
分类:
其他好文 时间:
2014-08-25 19:10:04
阅读次数:
258
1. jre的运行时主要jar文件rt.jar都很大,这导致了用java做的桌面客户端程序很难发布绑定jre发布。这在很大程度上限制了java桌面软件 的分发。可是,jre并不是在所有的用户计算机上都有安装,即使安装了,也未必我们期望的版本。因此,对jre做精简,减少体积是有必要的。请你给出一个 方...
分类:
其他好文 时间:
2014-08-25 18:56:34
阅读次数:
270
引发问题的来源:最近在看比较深入的JVM相关的书,不得不感慨,JVM确实是比较深奥,很多地方难以理解不说,在网上还找不到什么资料,发现一个左思右想都想不明白的问题上网来搜索,结果基本上都是从书上copy下来的东西,还是不能理解。 问题的出现:今天突然想到一个这样的问题,就是类变量也就是静态变量...
分类:
其他好文 时间:
2014-08-25 11:30:14
阅读次数:
168
JDK里面本身就带了很多的监控工具,如JConsole等。 我们今天要讲的这款工具visualvm,就是其中的一款。但是这款工具是在JDK1.6.07及以上才有的。它能够对JAVA程序的JVM堆、线程、类加载情况、JVM GC情况进行监控,是一个很好的免费的监控工具。监控范围:JDK1.4及以上版....
分类:
编程语言 时间:
2014-08-24 18:00:53
阅读次数:
247
1.Java的内存泄漏
在Java中,内存泄漏指的是存在具备下面两个特点的对象:
①这些对象是可达的,即在有向图中,存在通路可以与其相连;
②这些对象是无用的,即程序以后不会再使用这些对象。
如果对象满足这两个条件,就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,却占用着内存。对于那些不可达的对象,GC会负责回收。
我们可以通过调用System.gc()去访问GC,但是JVM...
分类:
编程语言 时间:
2014-08-24 15:30:12
阅读次数:
325
看了你的问题, 我还特意的查看了ZooKeeper的启动脚本代码。ZooKeeper启动脚本没有加任何参数,也就是使用jvm默认的。如果想要加大ZooKeeper的JVM使用内存。可以在更改{ZK_HOME}/bin/zkServer.sh,大约在109-110行。?12nohup $JAVA "-...
分类:
其他好文 时间:
2014-08-24 10:13:02
阅读次数:
249
出现java.lang.OutOfMemoryError: Java heap space的错误要么是程序问题,要么就是分配给JVM的内存确实不够。
一般来说都是可以事前可控解决的。
但是如果不可控的情况,例如使用第三方包,或者系统抽筋,就会抛出OutOfMemoryError错误。OH NO,根据不会抛出来,当前线程直接挂掉。
既然都...
分类:
编程语言 时间:
2014-08-23 21:40:51
阅读次数:
250
启动mqnamesrv总是报,Load JVM error D:\Program Files (x86)\Java\jdk1.6.0_13/jre/bin/server/jvm.dll,我JDK检查几次没有问题
后在开发群里询问网友,JDK必须使用64位解决掉了。
启动mqnamesrv
start/b bin/mqnamesrv.exe >mqnamesrv.log
...