
java虚拟机学习
一个瘦子的梦想
我只是想出去走走
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java stackoverflowerror与outofmemoryerror区别
1、stackoverflow:每当Java程序启动一个新的线程时,java虚拟机会为他分配一个栈,java栈以帧为单位保持线程运行状态;当线程调用一个方法是,jvm压入一个新的栈帧到这个线程的栈中,只要这个方法还没返回,这个栈帧就存在。 如果方法的嵌套调用层次太多(如递归调用),随着java栈中的帧的增多,最终导致这个线程的栈中的所有栈帧的大小的总和大于-Xss设置的值,而产生生StackOve转载 2017-04-26 18:12:30 · 443 阅读 · 0 评论 -
java虚拟机运行时数据区域
java内存区域与内存溢出异常运行时数据区域方法区和堆是所有线程共享的区域 其他的是线程隔离的区域 1.程序计数器:线程私有,记录java虚拟机执行指令的位置。是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域,因为它是一个整数,所占有的空间大小是可预见的,所以没必要规定!原创 2017-04-26 18:06:39 · 835 阅读 · 0 评论 -
虚拟机对象探秘
对象的创建 对象内存分配两种方式 指针碰撞(Bump the Pointer)前提是java堆的内存分配是规整的,使用过的内存放在一边,未使用的放在一边,中间放一个指针,作为分界点的指示器。 空闲列表(Free List)这种内存是未使用的和使用过的内存是杂乱的,所以只能选择一块适合大的内存区域作为对象创建的内存。 内存分配的安全性 线程同步:对内存分配空间的动作做同步处理。 本地线程分配缓冲(原创 2017-04-27 11:29:49 · 324 阅读 · 0 评论 -
OutOfMemoryError异常
目的: 通过代码验证java虚拟机规范中描述的各个运行时区域所存储的数据 帮助快速定位异常,比如:什么区域出的异常,什么代码可能导致异常,该异常该如何处理 启动参数 -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 java堆溢出 虚拟机栈和本地方法栈溢出 方法区和运行时常量池溢出 本机直接内存溢转载 2017-04-27 13:58:13 · 389 阅读 · 0 评论 -
shell脚本
#!/bin/sh time=`date +%Y-%m-%d%H:%M` #if [ ! -d $/data/old-bak/gtapp/$time ] ; then mkdir -p /data/old-bak/gtapp/$time #else tar -Pcvzf /data/old-bak/gtapp/$time/$time.tar.gz /data/apps/gt-app rm -rf原创 2017-07-29 16:43:16 · 298 阅读 · 0 评论 -
linux下让tomcat以service方式运行
执行一下步骤,可以使Tomcat以Service方式运行: 一、创建启动/停止脚本文件:#!/bin/bash # # tomcat # # chkconfig: 345 96 30 # description: Start up the Tomcat servlet engine. # # processname: java # pidfile: /var/run/tomcat.pid # ##原创 2017-07-29 16:52:27 · 569 阅读 · 0 评论