内存的划分本文所谈的内存是指的运行时数据区域,分为:
共享的数据区:
堆(Heap)
方法区(Method Area)
线程隔离的数据区:
虚拟机栈(VM Stack)
本地方法栈(Native Method Stack)
程序计数器(Program Counter Register)
Java线程栈的内存管理(隔离内存)线程隔离的性质意味着线程和栈是关联的,每个线程在创建时会创建自己的...
分类:
其他好文 时间:
2016-04-26 21:32:06
阅读次数:
167
堆设置 -Xmx3550m:设置JVM最大堆内存 为3550M。 -Xms3550m:设置JVM初始堆内存 为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。 -Xss128k:设置每个线程的栈 大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为25 ...
分类:
编程语言 时间:
2016-04-05 00:14:23
阅读次数:
284
获取进程号使用命令:jps常用参数:-m输出传递给main方法的参数,如果是内嵌的JVM则输出为null。-l输出应用程序主类的完整包名,或者是应用程序JAR文件的完整路径。-v输出传给JVM的参数。示例:线程栈的获取使用命令:jstack,通常使用管道将信息输出到文件,便于分析常用参数..
分类:
编程语言 时间:
2016-03-08 00:48:56
阅读次数:
412
01 进程 进程是指在系统中正在运行的一个应用程序。每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。 进程 负责非配内存 主线程跟子线程都在栈区中运行:非常可贵 主线程栈区1M 子线程栈区512KB 通过“活动监视器”可以查看Mac系统中所开启的进程02 线程1个进程...
分类:
编程语言 时间:
2016-01-03 07:36:46
阅读次数:
244
【转载 http://ifeve.com/thread-safety/】 允许被多个线程同时执行的代码称作线程安全的代码。线程安全的代码不包含竞态条件。当多个线程同时更新共享资源时会引发竞态条件。因此,了解Java线程执行时共享了什么资源很重要。【局部变量】 局部变量存储在自己的线程栈中。这样的.....
分类:
编程语言 时间:
2015-12-30 21:58:45
阅读次数:
231
使用类型和CLR时必须掌握一些基础知识,所有类型都具有一组最基本的行为,这很重要。包含类型安全性、命名空间、程序集以及对象的类型传唤。最后来理解类型、对象、线程栈和托管堆在运行时的相互联系。
情况:在高并发情况下,查看线程栈信息,有大量的线程BLOCKED。从线程栈得知,线程栈中出现了阻塞,锁在了com.fasterxml.jackson.databind.ser.SerializerCache.untypedValueSerializer(SerializerCache.java:74...
分类:
其他好文 时间:
2015-12-23 22:55:25
阅读次数:
498
jvm内存模型程序计数器:是一块很小的内存空间。当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源。每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令。java虚拟机栈(线程栈 ):也是线程私有内存空间,他和java线程在同一时间创建,他保存方法的局部变量、部分结果,并...
分类:
其他好文 时间:
2015-12-07 18:19:22
阅读次数:
150
用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最新的值。volatile很容易被误用,用来进行原子性操作。package com.guangshan.test;public class TestVolatile { public static int ...
分类:
编程语言 时间:
2015-11-17 20:38:45
阅读次数:
195
上一节我们以计数器作为例子描述了非阻塞算法,这一节我们拿一个稍微复杂一点的数据结构栈来讲述非阻塞算法的实践应用。1.单线程栈public class SingleThreadStack implements Stack{ private Node head; public Node p...
分类:
编程语言 时间:
2015-11-03 10:21:23
阅读次数:
179