| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- #!/bin/sh
- #
- # Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
- # ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
- #
- # resolve symlinks
- #
- PRG=$0
- while [ -h "$PRG" ]; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
- if expr "$link" : '^/' 2> /dev/null >/dev/null; then
- PRG="$link"
- else
- PRG="`dirname "$PRG"`/$link"
- fi
- done
- progdir=`dirname "$PRG"`
- old=`pwd`
- cd "$progdir"/..
- basedir=`pwd`
- cd "$old"
- case "`uname`" in
- Darwin*)
- # set default userdir and cachedir on Mac OS X
- DEFAULT_USERDIR_ROOT="${HOME}/Library/Application Support/VisualVM"
- DEFAULT_CACHEDIR_ROOT=${HOME}/Library/Caches/VisualVM
- ;;
- *)
- # set default userdir and cachedir on unix systems
- DEFAULT_USERDIR_ROOT=${HOME}/.visualvm
- DEFAULT_CACHEDIR_ROOT=${HOME}/.cache/visualvm
- ;;
- esac
- if [ -f "$progdir"/../lib/visualvm/etc/visualvm.conf ] ; then
- visualvm_jdkhome="$basedir"
- old=`pwd`
- cd "$progdir/../lib/visualvm/"
- basedir=`pwd`
- cd "$old"
- . "$progdir"/../lib/visualvm/etc/visualvm.conf
- elif [ -f "$progdir"/../etc/visualvm.conf ] ; then
- . "$progdir"/../etc/visualvm.conf
- fi
- export DEFAULT_USERDIR_ROOT
- # #68373: look for userdir, but do not modify "$@"
- userdir="${visualvm_default_userdir}"
- cachedir="${visualvm_default_cachedir}"
- founduserdir=""
- for opt in "$@"; do
- if [ "${founduserdir}" = "yes" ]; then
- userdir="$opt"
- break
- elif [ "$opt" = "--userdir" ]; then
- founduserdir="yes"
- fi
- done
- foundcachedir=""
- for opt in "$@"; do
- if [ "${foundcachedir}" = "yes" ]; then
- cachedir="$opt"
- break
- elif [ "$opt" = "--cachedir" ]; then
- foundcachedir="yes"
- fi
- done
- if [ -f "${userdir}"/etc/visualvm.conf ] ; then
- . "${userdir}"/etc/visualvm.conf
- fi
- if [ ! -f "$basedir"/etc/visualvm.clusters ]; then
- echo Cannot read cluster file: "$basedir"/etc/visualvm.clusters 1>&2
- exit 1
- fi
- readClusters() {
- grep -v "^#" "$basedir"/etc/visualvm.clusters | grep -v "^$" | grep -v platform | while read X; do
- if expr "$X" : "/.*" >/dev/null; then
- echo "$X"
- else
- echo "$basedir/$X"
- fi
- done
- }
- absolutize_paths() {
- while read path; do
- if [ -d "$path" ]; then
- (cd "$path" 2>/dev/null && pwd)
- else
- echo "$path"
- fi
- done
- }
- visualvm_clusters=`readClusters | absolutize_paths | tr '\012' ':'`
- if [ ! -z "$visualvm_extraclusters" ] ; then
- visualvm_clusters ="$visualvm_clusters:$visualvm_extraclusters"
- fi
- heap_size () {
- mem=640
- case "`uname`" in
- Linux*)
- mem=`cat /proc/meminfo | grep MemTotal | tr -d [:space:][:alpha:]:`
- mem=`expr $mem / 1024`
- ;;
- SunOS*)
- mem=`/usr/sbin/prtconf | grep Memory | /usr/bin/tr -dc '[0-9]'`
- ;;
- Darwin*)
- mem=`/usr/sbin/sysctl hw.memsize | tr -d [:alpha:][:space:].:`
- mem=`expr $mem / 1048576`
- ;;
- *)
- ;;
- esac
- if [ -z "$mem" ] ; then
- mem=640
- fi
- mem=`expr $mem / 5`
- if [ $mem -gt 1024 ] ; then
- mem=1024
- elif [ $mem -lt 96 ] ; then
- mem=96
- fi
- max_heap_size=$mem
- return 0
- }
- if grep -v -- "-J-Xmx" >/dev/null <<EOF ; then
- ${visualvm_default_options}
- EOF
- heap_size
- visualvm_default_options="-J-Xmx${max_heap_size}m ${visualvm_default_options}"
- fi
- launchNbexec() {
- nbexec=`grep -v "^#" "$basedir"/etc/visualvm.clusters | grep -v "^$" | grep platform | while read X; do
- if expr "$X" : "/.*" >/dev/null; then
- echo $X/lib/nbexec
- elif [ -f "$basedir"/$X/lib/nbexec ]; then
- echo "$basedir"/$X/lib/nbexec
- fi
- done | head -n 1`
- if [ \! -n "$nbexec" ] ; then
- nbexec="$basedir"/platform/lib/nbexec
- fi
- sh=sh
- # #73162: Ubuntu uses the ancient Bourne shell, which does not implement trap well.
- if [ -x /bin/bash ]
- then
- sh=/bin/bash
- fi
- if [ "${founduserdir}" = "yes" ]; then
- exec $sh "$nbexec" "$@"
- else
- if [ "${foundcachedir}" = "yes" ]; then
- exec $sh "$nbexec" --userdir "${userdir}" "$@"
- else
- exec $sh "$nbexec" --userdir "${userdir}" --cachedir "${cachedir}" "$@"
- fi
- fi
- }
- # in case of macosx, the apple.laf.useScreenMenuBar property should be ideally in the Info.plist file
- # but it doesn't get propagated into the executed java VM.
- case "`uname`" in
- Darwin*)
- eval launchNbexec \
- --jdkhome '"$visualvm_jdkhome"' \
- -J-Xdock:name=VisualVM \
- '"-J-Xdock:icon=$basedir/etc/visualvm.icns"' \
- --branding visualvm \
- --clusters '"$visualvm_clusters"' \
- ${visualvm_default_options} \
- '"$@"'
- ;;
- *)
- eval launchNbexec \
- --jdkhome '"$visualvm_jdkhome"' \
- --branding visualvm \
- --clusters '"$visualvm_clusters"' \
- ${visualvm_default_options} \
- '"$@"'
- ;;
- esac
|