203 lines
5.1 KiB
Plaintext
203 lines
5.1 KiB
Plaintext
|
#!/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-Dcom.apple.mrj.application.apple.menu.about.name=VisualVM \
|
||
|
-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
|