原因:系统设置中有设置了不允许over commitso,无法分配足够内存/etc/sysctl.conf vm.overcommit_memory=1 或者sysctl vm.overcommit_memory=1 或者 echo 1 > /proc/sys/vm/overcommit_mem.....
分类:
其他好文 时间:
2014-10-23 11:58:18
阅读次数:
251
如何区分垃圾 上面说到的“引用计数”法,通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以,后来实现的垃圾判断算法中,都是从程序运行的根节点出发,遍历整个对象引用,查找存活的对象。那么在这种方式的实现中,垃圾回收从哪儿开始的呢?即,...
分类:
其他好文 时间:
2014-10-22 20:22:31
阅读次数:
186
java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制。否则可能导致应用程序宕掉。举例说明含义:-Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。说明:如果-X...
分类:
其他好文 时间:
2014-10-22 20:13:01
阅读次数:
278
在java 1.5的release notes里面可以看到这样一句话:The compiler in the server VM now provides correct stack backtraces for all "cold" built-in exceptions. For perform...
分类:
其他好文 时间:
2014-10-22 18:00:49
阅读次数:
203
JVM本身支持指定参数来让Java程序以调试模式启动,当虚拟机运行在调试模式下,你只要去连接它的相应监听端口就可以远程调试程序了。 具体做法如下: 1、在java命令后跟如下参数启动程序: JAVA_DEBUG_OPT="?-se...
分类:
编程语言 时间:
2014-10-22 16:09:30
阅读次数:
159
1.JVM(Java Virtual Machine) 1.-Xms??? 初始堆大小 2.-Xmx??? 最大堆大小 3.-Xmn??? 青年代大小 4.-Xss??? 每个线程的堆栈大小 5.-XX:+UseParNewGC??? 青年代垃圾收集方式为并行收集 6.-XX:+U...
分类:
编程语言 时间:
2014-10-22 14:45:48
阅读次数:
255
JVM GC 垃圾回收器类型小结
JVM的垃圾回收器大致分为四种类型:
1、串行垃圾回收器
2、并行垃圾回收器
3、并发标记扫描垃圾回收器
4、G1垃圾回收器
1、串行垃圾回收器
串行垃圾回收器在进行垃圾回收时,它会持有所有应用程序的线程,冻结所有应用程序线程,使用单个垃圾回收线程来进行垃圾回收工作。
串行垃圾回收器是为单线程环境而设计的,如果你的程序不需要多线程,启动串行...
分类:
编程语言 时间:
2014-10-22 14:34:15
阅读次数:
291
java程序的运行机制,首先就要对jvm有一个简单的认识,java程序的运行借助于jvm。jvm是可以理解为一个实体计算机的模拟,有自己的ram、寄存器等“硬件”,jvm运行的是经过java编译器编译之后的字节码文件,也就是...
分类:
编程语言 时间:
2014-10-22 13:03:10
阅读次数:
180
大部分内容来源网络,整理一下,留个底。问:堆和栈有什么区别?答:堆是存放对象的,但是对象内的临时变量是存在栈内存中,如例子中的methodVar是在运行期存放到栈中的。 栈是跟随线程的,有线程就有栈,堆是跟随JVM的,有JVM就有堆内存。问: 堆内存中到底存在着什么东西?答:对象,包括对象变量以及对...
分类:
其他好文 时间:
2014-10-22 10:57:04
阅读次数:
205
在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。引用计数器实现简单,效率高;但是不能解决循环...
分类:
编程语言 时间:
2014-10-22 10:54:31
阅读次数:
227